hibbert - Mi 07.07.04 22:04
Titel: Image Stream
Hi,
ich habe ein Image auf meiner Form. Dieses Image zeigt mir ein Bild meiner Webcam an.
Wie bekomme ich mein Webcam Bild in das Image? Ganz einfach:
Mit hilfe eines Timers speicher ich das Bild der Webcam in einem .bmp ab und lade dieses in das image, weil ich das Bild meiner Webcam nicht in einem Image erhalte.
So das geschieht nun alle zehntel sek. (umständlich, funzt aber:wink:).
So, nun möchte ich dieses Bild an einen Clienten schicken.
Dazue benötige ich ja die Komponenten von indy (Server / Client).
Das ist schonmal der QT vom Server:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var FStream: TFileStream; begin FStream := TFileStream.Create(getcurrentdir+'\1.bmp', fmOpenRead); try AThread.Connection.OpenWriteBuffer; AThread.Connection.WriteStream(FStream,true,true); AThread.Connection.CloseWriteBuffer; finally AThread.Connection.Disconnect; FStream.Free; end; end; |
Und der QT vom Clienten sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); var FStream: TFileStream; begin try Client.Connect(15000); except on E: Exception do MessageDlg ('Fehler beim Verbinden:'#13+E.Message, mtError, [mbOk], 0); end; FStream := TFileStream.Create(getcurrentdir+'\1.bmp', fmCreate); try Client.ReadStream(FStream, -1); FStream.Seek(0, soFromBeginning); finally FStream.Free; end; fstream.Free; end; |
Doch damit empfange ich das Bild nur einmal, wenn ich dann die Procedure erneut ausführe, bekomme ich folgende Fehlermeldungen:
| Fehlermeldung #1 hat folgendes geschrieben: |
| Zugriffsverletzung usw... |
| Fehlermeldung #2 hat folgendes geschrieben: |
| Die Verbindung besteht bereits |
Die zweite Fehlermeldung kommt auch, wenn ich noch ein
client.disconnect; einbaue....
Kann man das noch etwas eleganter lösen ??
thx hibbert