![]() |
Problem mit IP Works*
Hallo zusammen, habe leider ein kleines Problem mit der IPWorks Komponente ipwIPPort.
Hier das Problem: Ich habe einen keinen Server erstellt der sobald ein Client Connected ein Bild per Stream sendet. Soweit so gut... Jetzt das Problem: das DataIn Ereigniss von IPPort setzt die eingehenden Daten als String. 1. Wie kann ich diesen String wieder als Stream umwandeln damit ich diese in die Image-Komponente des Clients laden kann ???? 2. Es soll danach dann noch Text per Stream gesendet werden, der im Client in ein Memo geschrieben wird. Sage ich aber einfach Memo1.lines.add(text); bekomme ich nur ein | Zeichen pro Nachricht. (text ist der name des Strings in der Kompo ) Wäre super wenn mir jemand hier weiterhelfen könnte, mache da wohl irgendwie Denkfehler. Hatte jetzt für Punkt1 gedacht ich schreib das ganze wieder in einen Stream und zeig das an aber da bekomme ich dann einen JPEG Fehler # 42. Hier mal der Quelltext:
Delphi-Quellcode:
Hoffe Ihr könnt mir helfen.
procedure TForm1.ipwIPPort1DataIn(Sender: TObject; Text: String;
EOL: Boolean); var Bildstream:TMemoryStream; begin Bildstream:= TMemoryStream.Create; try Bildstream.Read(text,length(text)); bildstream.Position:=0; jp.Loadfromstream(bildstream); image1.Picture.Assign(jp); finally image1.Invalidate; Bildstream.Free; end; end; Gruss Stefan |
Re: Problem mit IP Works*
Delphi-Quellcode:
Oder noch eleganter/besser:
procedure TForm1.ipwIPPort1DataIn(Sender: TObject; Text: String;
EOL: Boolean); var Bildstream:TMemoryStream; begin Bildstream:= TMemoryStream.Create; try // Bildstream.Read(text,length(text)); // Falsch !! Bildstream.WriteBuffer(text[1],length(text)); // Richtig bildstream.Position:=0; jp.Loadfromstream(bildstream); image1.Picture.Assign(jp); finally image1.Invalidate; Bildstream.Free; end; end;
Delphi-Quellcode:
Jetzt musst du aber noch aufpassen! Wenn du die Daten in Häppchen zerlegt bekommst, muss du
procedure TForm1.ipwIPPort1DataIn(Sender: TObject; Text: String;
EOL: Boolean); var Bildstream:TStream; begin Bildstream:= TStringStream.Create(text); try bildstream.Position:=0; jp.Loadfromstream(bildstream); image1.Picture.Assign(jp); image1.Invalidate; finally Bildstream.Free; end; end; die Daten aneinanderhängen. Ist EOL: Boolean die Kennung, dass das letzte Paket geschickt wurde? (ich kenne die IP Works Komponenten nicht) |
Re: Problem mit IP Works*
Danke für deine Antwort, werde das mal test, melde mich dann wieder...
:coder: |
Re: Problem mit IP Works*
Schade, geht leider auch nicht bekomme immer einen JPEG-Fehler=#53.
Habe beide varianten ausprobiert. EOF ist True wenn CRLF ('#13#10') ist, sodass z.B eingehender Text in Zeilen gesetzt werden. Habe schon nach dem Fehler 53 geschaut aber bis dato nichts gefunden... Vielleicht noch ne idee ? Gruss Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz