Ich habs jetzt gelöst:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
MStream: TMemoryStream;
SizeOfIncomingStream: Integer;
IDS: TidStreamVCL;
png:TPNGObject;
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;
memo1.lines.Add('size'+inttostr(SizeOfIncomingStream));
Socket.ReadStream(IDS, SizeOfIncomingStream);
Memo1.Lines.Add('test0');
finally
// Disconnect;
end;
end;
// Damit der Inhalt von IDS in FStream übertragen wird:
IDS.VCLStream.Position := 0;
Memo1.Lines.Add('test1');
finally
FreeAndNil(IDS);
end;
//jetzt kannste irgendetwas mit dem Stream machen, z.B. wieder in ein bitmap laden:
png:=TPNGOBject.Create;
try
png.LoadFromStream(MStream);
image1.Picture.Bitmap.Assign(png);
ContactScreenForm.Image1.Picture.Bitmap.Assign(png);
finally
png.Free;
mStream.Free;
end;
end;
Ich musste den Stream erst wieder in ein TPNGObject laden. Erst dann kann er in ein Image übertragen werden. Es hat also immer beim reinladen ins image gehakt und deshalb wurde der darauf folgende showmessage ausdruck nicht ausgewertet.
Viele Grüße
Stefan.