Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit IP Works* (https://www.delphipraxis.net/41819-problem-mit-ip-works%2A.html)

Stefan_Bo 9. Mär 2005 09:19


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:
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;
Hoffe Ihr könnt mir helfen.

Gruss

Stefan

shmia 9. Mär 2005 16:47

Re: Problem mit IP Works*
 
Delphi-Quellcode:
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;
Oder noch eleganter/besser:
Delphi-Quellcode:
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;
Jetzt musst du aber noch aufpassen! Wenn du die Daten in Häppchen zerlegt bekommst, muss du
die Daten aneinanderhängen. Ist EOL: Boolean die Kennung, dass das letzte Paket geschickt wurde? (ich kenne die IP Works Komponenten nicht)

Stefan_Bo 9. Mär 2005 17:00

Re: Problem mit IP Works*
 
Danke für deine Antwort, werde das mal test, melde mich dann wieder...
:coder:

Stefan_Bo 10. Mär 2005 08:04

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