Autor Beitrag
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: So 29.09.02 16:02 
Hi,
wie kann ich mit den InDy's einen Screenshot versenden, ohne eine Datei zu speichern oder zu laden? Der zu versendende Screenshot liegt im Speicher als BMP vor.

maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
maxk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 07.03.03 21:06 
So, damit der Post nicht unbeantwortet bleibt, hier die Lösung:
Ich empfehle mit einem JPEG zu arbeiten, da dieses wesentlich kleiner ist als ein Bitmap. Die Umwandlung BMP->JPEG soll hier nicht weiter interessieren. Hier also der Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var MS:TMemoryStream:
begin
 MS:=TMemoryStream.Create;
 JPEG.SaveToStream(MS);
 MS.Position:=0;
 Client.WriteStream(MS); // Client bezeichnet die Indy-Komponente
 MS.free;
end;

Das kann dann so wieder empfangen werden:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var MS:TMemoryStream;
begin
 MS:=TMemoryStream.Create;
 Client.ReadStream(MS);
 MS.Position:=0; // ist sehr wichtig, da TJpegImage sonst streikt
 JPEG.LoadFromStream(MS);
 MS.free;
end;

Der Code speichert keine Daten auf der HD. (Virtueller Speicher zählt nicht :twisted: )

maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.