OK?! Naja, den Code hab ich nicht bei, da ich erst ewig woandershinlaufen muss um ans Internet zu kommen, weil es bei uns noch kein Internet gibt, aber ich habe noch ein wenig rumprobiert und das ganze dann auch theoretisch mit SendStream() hinbekommen! Das sieht dann, glaube ich, so aus:
Delphi-Quellcode:
var FStream: TFileStream //oder auch TMemoryStream
begin
//Screenshot wurde gemacht und unter 'C:\screenshot.jpg' abgespeichert
FStream := FStream.Create('C:\screenshot.jpg', fmOpenRead);
SendStream(FStream);
end;
Nun zum nächsten Problem: Ich versende ja alle möglichen Informationen per SendText und empfange sie auch wieder mit ReceiveText, aber der Stream ist irgendwie auch nur Text und nun habe ich ein einfaches Trennungsproblem! Ich empfange den Stream und speichere ihn da, wo Chatdaten oder Befehle ankommen! Wenn ich bestimmte Buchstabenfolgen vor das zu sendenden Datum setzte (z.B.
'#NA' + Nachricht oder
'#Screenshot' für den Screenshotbefehl), verwirft Delphi den empfangenen Text gleich nachdem ich ihn das erste mal abgefragt habe, wenn ich ihn nicht vollständig in eine Variable speichere!
Ich hab hier eine Lösungstheorie, weiß aber nicht, ob und wie sie funktioniert: Man müsste den Stream, der ja sowieso als Text ankommt von String wieder in einen TFile- oder TMemoryStream umwandeln und ihn dann dem bereits konstruierten Stream übergeben und ihn die einzelnen Teile zusammenfügen lassen.
Was sagt ihr dazu? Ist das möglich? Gibt es eine sauberere Lösung?
P.S.: Wenn ihr mir einen vollen Stream-Quelltext postet, dann bitte einen für TMemoryStream, weil ich eigentlich meine JPEG-Datei nicht auf der Festplatte zwischenspeichern möchte, da das viel zu langsam ist.