Entwickler-Ecke

Dateizugriff - Bitmaps in RECORD oder DATEI speichern


Mape - Mo 13.01.03 10:11
Titel: Bitmaps in RECORD oder DATEI speichern
:?:
vielleicht kann mir ja einer weiterhelfen...
ich möchte gerne eine Bitmap mit weiteren Daten in einem Record speichern und/oder in einer Datei abspeichern.
zB record
x,y:integer
bild:tbitmap;
end;
wie kann der das bild selbst und nicht nur den pfad abspeichern, damit ich mehrer Bitmaps in einer Datei speichern kann?


Klabautermann - Mo 13.01.03 10:20

Hallo,

da musst du mit untypisierten Dateien Arbeiten, und dir die Datei so aufbauen, das du vor dem Bitmap eil angiebst, wie groß dieses ist.

Am besten du guckst dir die Thematik (Untypisierte Dateien und/oder Streams) mal in der Delphi Hilfe an, und stellst dann weitergehende Fragen ;).

Gruß
Klabautermann


Mape - Mo 13.01.03 10:25

also ehrlich gesagt habe ich das schon versucht, bin aber nur an datenbanken usw. hängengeblieben..
hat nicht einer zufällig nen COde parat oder kann mich auf etwas ähnliches verweisen?


Udontknow - Mo 13.01.03 10:59

Hi!

In diesem Posting [http://www.auq.de/viewtopic.php?t=5355&start=0&postdays=0&postorder=asc&highlight=] habe ich ein einfaches Stream-Beispiel gegeben. Vielleicht hilft es ja.

Cu,
Udontknow


Klabautermann - Mo 13.01.03 12:26

Hallo,

ich habe jetzt nicht die Zeit dir hier code zu erstellen, aber eine Prizipielle Vorgegensweise kann ich dir beschreiben.
Der Einfachheithalber gehe ich davon aus, das du nur mehere Bitmaps in eine Datei schreiben willst.
Ein einzelnes Bitmap kann wie du weißt in der tBitmap Komponente laden und speichern. Dies funktioniert sowohl direckt aus Dateien als auch aus Streams. Jede Datei kannst du als Stream laden und schreiben.
Daraus ergibt sich, dass du ein Bitmap egal aus welcher Quelle es kommt als Stream betrachten kannst. Deshalb schlage ich vor, das du mit diesen Arbeitest.
Was du nun machen willst, ist im grunde das aneinanderhängen von mehreren Streams. Das ist nicht das Problem. Problematisch wird es dann, wenn du diese Streams wieder auseinander Fummeln willst.
Du musst dir also irgendwie Merken wo die einzelnen Teilstreams anfangen. Ich schlage vor, das du einfach vor jeden Teilstream einen LongInt einfügst, in welchen du speicherst wie lang der nächste Abschnitt ist.

Also Du hast viele Quellstreams, und einen Zielstream, in welchen alle Quellstreams kopiert werden sollen. Diesen kannst du dann speichern.
Der Aufbau des Zielstreams sieht nach meinem Vorschlag so aus:

[Länge Bitmap 1 (4Byte)] -> [Bitmap 1 (XByte)] -> [Länge Bitmap 2 (4Bypte)] -> [Bitmap 2 (Y Byte)] -> [...]

Gruß
Klabautermann


Eisenherz - Di 14.01.03 18:18

Hi Mape,

Na dann will ich mal wieder einen Link auf meine Homepage [http://www.kasparsoft.de/RakBinaryStreamData/index.htm] setzen. Dort findest Du Klassen, die derartige Aufgaben erleichtern sollen.