Hallo,
ich habe gemäß
diesem Thread einen MemoryStream an einen IdTCPServer versendet.
Im TCPServer.Onexcecute wird zwar ein Stream empfangen (SizeOfIncomingStream >0, siehe erstes "showmessage").
Der Stream wird aber nicht korrekt in meinen Memorystream "MStream" übertragen (zweites showmessage).
Woran kann den das liegen? Ist doch alles so wie im Beispiel (außer connect und disconnect. Das wird bei mir an anderer Stelle gemacht).
Hier kommt der Quelcode:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
MStream: TMemoryStream;
SizeOfIncomingStream: Integer;
IDS: TidStreamVCL;
begin
AContext.Connection.IOHandler.WriteLn(LEdtOwnerName.Text);
MStream := TMemoryStream.create;
IDS := TidStreamVCL.Create(MStream);
try
// Empfangen:
with AContext.connection do begin
try
SizeOfIncomingStream := Socket.ReadInteger;
Showmessage(inttostr(SizeOfIncomingStream));
Socket.ReadStream(IDS, SizeOfIncomingStream);
finally
// Disconnect;
end;
end;
// Damit der Inhalt von IDS in FStream übertragen wird:
IDS.VCLStream.Position := 0;
finally
FreeAndNil(IDS);
MStream.Free;
end;
//jetzt kannste irgendetwas mit dem Stream machen, z.B. wieder in ein bitmap laden:
Image1.Picture.Bitmap.LoadFromStream(MStream);
Showmessage(inttostr(MStream.Size));
end;
Sieht jemand den Fehler?
Viele Grüße
Stefan.