Dein Bitmap was du versuchst zu speichern ist im eigentlichem Sinn sur ein Zeiger auf einen
bestimten Punkt im Speicher.
Wenn du nun dein Bitmap in die Datei schreiben möchtest busst du wohl oder übel die realen
RGB-Daten deines Bitmaps speichern. Baue dir dazu ein Array, lies die
RGB-Daten über Scanline ein
und speicher dann das Array. Die Grösse des must du nun auch speichern.
Du kannst natürlich auch einen anderen Weg nutzen, TBitmap unterstützt das speichen in Streams.
Das ist etwas eleganter und einfacher.
Das sähe in etwa so aus:
Delphi-Quellcode:
procedure ...
var
nd: rNetDevice;
Temp: TMemoryStream;
i: integer;
B: Byte;
begin
nd.Typ := 1;
nd.PositionX := 2;
nd.PositionY := 3;
Temp := TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(Temp);
nd.BitmapLength := Temp.Size;
SetLength(nd.Bitmap, nd.BitmapLength + 1);
Temp.Position := 0;
for i := 0 to nd.BitmapLength -1 do
begin
Temp.Read(B, 1);
nd.Bitmap[i] := B;
end;
Temp.Free;
end;