![]() |
Datei an Datei anhängen
Hallo Zusammen,
ich habe da nen Problem (mal wieder): Ich bekomme beim Speichern ein Text File und ein JPG Bild. Ich möchte nun das JPG Bild an die Text datei an hängen, sodass ich nur noch eine Datei habe. Allerdings muss ich mit meinem Programm später diese Kombi Datei laden können und Die Text datei anzeigen lassen lassen (in ner Memo) und das JPG Bild in nem Image. Nun meine Frage(n): Geht dass überhaupt? Wenn ja könnte jemand mir sagen (aufzeigen) wie das geht (code snippet):thumb: Hoffe auf Antworten |
AW: Datei an Datei anhängen
Ich würde die beiden Dateien dann eher in ein Archiv oder anderen Container packen
|
AW: Datei an Datei anhängen
Du kannst vorher einen Header integrieren, wo drin steht, ab welchem Index die Textdatei und ab welchem Index dann das Bild. Das müßte über Streams zu machen sein. Ein Beispiel habe ich aber im Moment nicht.
|
AW: Datei an Datei anhängen
das geht. Eine Datei kann beliebige Daten enthalten und du musst dir lediglich Gedanken darüber machen wie du die Daten darin ablegst.
Eine einfache Variante vor den Daten immer zu hinterlegen wie groß diese sind. Damit kannst du beliebig viele Datenblöcke (in deinem Fall verschiedene Dateien) in eine Datei stopfen und es auch wieder auseinander nehmen. Üblicherweise schreibt man an den Anfang der Datei eine eindeutige Kennung um beim öffnen festzustellen ob es auch wirklich der richtige Dateityp ist (damit man die folgenden Daten nicht falsch interpretiert). |
AW: Datei an Datei anhängen
mhmm :?:
Wie bekomme ich den ein jpg in eine Stringlist? Und Später wieder zurück in eine JPG? Eine Textdatei dürfte ja kein Prob sein. ?? |
AW: Datei an Datei anhängen
Warum in eine Stringlist? Ich denke es geht um eine Datei.
Du kannst sowohl eine Stringlist in einen Stream (TFileStream) als auch ein JPG in einen Stream speichern. |
AW: Datei an Datei anhängen
ganz einfach: Du nimmst keine Stringliste, sondern Streams. Zuerst öffnest du den einen Stream und schreibst die Länge des Inhaltes vom Memo rein. Dann ein Trennungszeichen (du willst ja später wissen, wie lang und nicht den Text). Dann kannst du den kompletten Text per .SaveToStream() aus dem Memo holen. Danach schreibst du das JPEG mittels .SaveToStream() in den gleichen Stream. Fertig.
Bernhard |
AW: Datei an Datei anhängen
Ein Trennzeichen ist nicht notwendig da die Länge zum Beispiel als Cardinal gespeichert werden kann. Und dieser hat immer die gleiche Größe (SizeOf).
|
AW: Datei an Datei anhängen
man sieht wohl, dass ich meine Zahlen gerne als Text schreibe (also wie auf der Tastatur). Dann braucht man das Trennzeichen. Nimmt man Zahlen als Datentyp dann nicht, richtig.
Bernhard |
AW: Datei an Datei anhängen
Mom,
ich komme da nicht mit: also deklariere ich erstmal nen stream? Dann SChreibe ich meine Memo werte da rein? Dann nen Trennzeichen ? und dann das Bild? also so?
Delphi-Quellcode:
Ist dass so richtig?
procedure Button1.click (sender: TObject);
var MyStream: Stream; Imagejpg: JPEG; Trennzeichen: String; begin Memovirtual.savetostream(Mystream); Trennzeichen:= '<begin JPG>'; Trennzeichen.savetostream(Mystream); Imagejpg:= Loadfromfile('./Bild.jpg'); Imagejpg.savetoStream(MyStream); Mystream.savetofile(Meinmixstream.abc); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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