Dein Beispiel hat einen schweren Fehler: es wurde kein Speicher für Buffer reserviert!!
So geht's viel einfacher:
Delphi-Quellcode:
procedure TFileServer.ReceiveData(Sender: TObject; Socket: TCustomWinSocket);
var
Buffer: AnsiString; // AnsiString dein Freund und Helfer
Size: Integer;
begin
Size := Socket.ReceiveLength;
SetLength(buffer, Size); // Speicher reservieren
Socket.ReceiveBuf(Buffer[1], Size);
buffer := '<Start>' + buffer + '<end>'; // wir ändern den Buffer etwas
FileStream.WriteBuffer(Buffer[1], Length(buffer));
end;