![]() |
Record mit TBitmap in Stream speichern
Hi,
Ich habe einen Record:
Code:
Mein Problem liegt beim Speichern des TBitmap im Stream.
TJoinRecord = packed Record
Name : String; bild : TBitmap; end; var JoinRec : TJoinRecord; procedure TForm1.Button5Click(Sender: TObject); //Button um Bild zu laden begin JoinRec.Name := edit2.text; JoinRec.bild.Free; JoinRec.bild := TBitmap.Create; JoinRec.bild.LoadFromFile('C:\IMGP0445.bmp'); //Bild laden end; procedure TForm1.Button6Click(Sender: TObject); var Stream, f: TFileStream; frEdit2: string; count: integer; begin Stream:=TFileStream.Create('C:\test.dat',fmCreate); try Stream.Position := 0; //EDIT SPEICHERN frEdit2 := edit2.text; count := Length(frEdit2); Stream.Writebuffer(count,SizeOf(Integer)); Stream.WriteBuffer(frEdit2[1],count); //ENDE EDIT SPEICHERN //BILD SPEICHERN count := SizeOf(JoinRec.bild); <-- funktioniert nicht. Wie kann ich die Größe des Bildes ermitteln? Stream.Writebuffer(count,SizeOf(Integer)); Stream.WriteBuffer(JoinRec,count); <-- wie kann ich das Bild dann über den Stream speichern? //ENDE BILD SPEICHERN finally Stream.Free; end; end; |
Re: Record mit TBitmap in Stream speichern
Also mit
Delphi-Quellcode:
Bekommst du nur die Größe des Datentyps, aber nicht die größe des Bitmaps an sich. Lösung wäre die Größe noch mal separat abzuspeichern.
SizeOf(JoinRec.bild)
|
Re: Record mit TBitmap in Stream speichern
Hi Luckie,
Du meinst ich kann einfach die Größe der Datei ermitteln und diese dann Count zuweisen? |
Re: Record mit TBitmap in Stream speichern
Das ginge auch. Abzüglich deines Strings natürlich. Und da würd eich auch einen ShortString nehmen, da String eigentlich nur ein Zeiger auf einen Adressbereich ist.
|
Re: Record mit TBitmap in Stream speichern
Hi Luckie,
Könnte ich die Datei nicht einfach in einem anderen Stream öffnen und dadurch die Größe bestimmen? Wenn ja wie? Geht das mit SizeOf? |
Re: Record mit TBitmap in Stream speichern
Hi,
über: count := f.Seek(0, soFromEnd); komme ich jetzt an die Größe (f ist ein FileStream in dem ich das Bild geladen habe) Allerdings bekomme ich beim Versuch das Bild zu Speichern einen Stream-Schreibfehler. |
Re: Record mit TBitmap in Stream speichern
Hi,
Ok, hat sich erledigt. Über Stream.CopyFrom(f, 0) funktionierts. |
Re: Record mit TBitmap in Stream speichern
Moin!
Zitat:
MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz