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)