Hallo zusammen!
Ich finde den Buffer als string zu definieren ist nicht grade die eleganteste Lösung.
Da wird es bei größeren Dateien Probleme geben.
Mein Vorschlag:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
str : TFileStream;
buffer : Pointer;
begin
try
str := TFileStream.Create('xxx.txt',fmOpenRead);
buffer := AllocMem(str.Size);
str.Read(Buffer^,str.Size);
Server.Socket.Connections[0].SendBuf(buffer^,str.Size);
finally
FreeMem(buffer);
FreeAndNil(str);
end;
end;
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
len : integer;
buffer : Pointer;
str : TFileStream;
begin
len := Socket.ReceiveLength;
try
str := TFileStream.Create('xxx2.txt',fmCreate);
buffer := AllocMem(len);
Socket.ReceiveBuf(buffer^,len);
str.Write(buffer^,len);
finally
FreeAndNil(str);
FreeMem(buffer);
end;
end;
Ich denke, dass es so funktionieren müsste.