Hallo!
Ich möchte einen Stream, aus einem TWinSocketStream-Objekt in einem Filestream speichern. Dazu habe ich ein Array deklariert.
Das Ganze sieht dann ungefähr so aus:
var MyStream : TWinSocketStream;
buffer: array[0 .. 3500] of Char;
datei: TFilestream;
begin
MyStream := TWinSocketStream.Create(sock,40000);
datei := TFilestream.Create(pfad,fmCreate);
try
while (main.Form1.ClientSocket.Active) and (Abbruch = false) do begin
if MyStream.WaitForData(40000) then begin
fillchar(buffer,sizeof(buffer),0);
MyStream.Read(buffer,sizeof(buffer));
datei.Write(buffer,length(buffer));
.
.
.
Nun stört es mich, dass es kein dynamischer Array ist. Es ist ja auch nicht immer sichergestellt, dass der Stream 3500
Zeichen liefert. Mal mehr, mal weniger. Sobald ich aber einen dynamischen Array erstelle und die Grösse erst während der Laufzeit
ermittele klappt das lesen nicht mehr aus dem TWinSocketStream. Hab den Array zur Laufzeit mit setlength eine Grösse zugewiesen
und dann versucht dem dem Stream zu füllen. Klappt nicht ! Sobald der Array wieder statisch ist, klappt alles.
Kennt wer dieses Problem, oder hat wer dafür eine Lösung ?
Ich möchte einen Stream, aus einem TWinSocketStream-Objekt in einem Filestream speichern. Dazu habe ich ein Array deklariert.
Das Ganze sieht dann ungefähr so aus:
var MyStream : TWinSocketStream;
buffer: array[0 .. 3500] of Char;
datei: TFilestream;
begin
MyStream := TWinSocketStream.Create(sock,40000);
datei := TFilestream.Create(pfad,fmCreate);
try
while (main.Form1.ClientSocket.Active) and (Abbruch = false) do begin
if MyStream.WaitForData(40000) then begin
fillchar(buffer,sizeof(buffer),0);
MyStream.Read(buffer,sizeof(buffer));
datei.Write(buffer,length(buffer));
.
.
.
Nun stört es mich, dass es kein dynamischer Array ist. Es ist ja auch nicht immer sichergestellt, dass der Stream 3500
Zeichen liefert. Mal mehr, mal weniger. Sobald ich aber einen dynamischen Array erstelle und die Grösse erst während der Laufzeit
ermittele klappt das lesen nicht mehr aus dem TWinSocketStream. Hab den Array zur Laufzeit mit setlength eine Grösse zugewiesen
und dann versucht dem dem Stream zu füllen. Klappt nicht ! Sobald der Array wieder statisch ist, klappt alles.
Kennt wer dieses Problem, oder hat wer dafür eine Lösung ?
Comment