Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#7

Re: Indy TCP Server empfängt zwar, aber Stream kommt nicht a

  Alt 21. Aug 2008, 22:22
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.
  Mit Zitat antworten Zitat