![]() |
Mehrere Dateien in eine ZIP-Datei
Hi Leute, mein Problem ist folgendes, ich möchte 4 Dateien in eine packen (gerne auch ZIP).
Ich habe schon viel gesucht aber nur Mist gefunden, der entweder garnicht oder nur teilweise funktioniert. Deshalb mein neuer Post hier in der DP. Vielen Dank im Vorraus ;) |
Re: Mehrere Dateien in eine ZIP-Datei
Und wo ist jetzt das Problem? Wie stellst du dir vor, dass wir dir jetzt helfen sollen?
Welche Komponente benutzt du? Was hast du bisher probiert und was funktioniert da nicht? |
Re: Mehrere Dateien in eine ZIP-Datei
Ich möchte 4 dateien in 1 Datei packen, momentan verwende ich einen TMemoryStream der nicht ganz funktioniert.
Prozedur musss ich mal eben suchen... |
Re: Mehrere Dateien in eine ZIP-Datei
Mal so schnell hingedacht:
FileStream erstellen Länge der ersten Datei reinschreiben Erste Datei reinschreiben Länge zweite Datei reinschreiben Zweite Datei reinschreiben ... |
Re: Mehrere Dateien in eine ZIP-Datei
So jetzt hab ich die Prozedur gefunden:
Delphi-Quellcode:
{-------------------------------------------------------------------}
procedure FileToStream(const FileName: String; Stream: TStream); var a : Array[0..255] of Char; c : Cardinal; fs: TFileStream; begin c := Length(ExtractFileName(FileName)); StrPCopy(@a, ExtractFileName(FileName)); Stream.Write(c, 4); Stream.Write(a, c); fs := TFileStream.Create(FileName, fmOpenRead); c := fs.Size; Stream.Write(c, 4); Stream.CopyFrom(fs, 0); fs.Free; end; {-------------------------------------------------------------------} procedure StreamToFile(Stream: TStream); var a : Array[0..255] of Char; c : Cardinal; fs: TFileStream; begin FillChar(a, 255, 0); Stream.Read(c, 4); Stream.Read(a, c); Stream.Read(c, 4); fs := TFileStream.Create(a, fmCreate); fs.CopyFrom(Stream, c); fs.Free; end; {-------------------------------------------------------------------} // Packen var ms: TMemoryStream; begin ms := TMemoryStream.Create; FileToStream('.\Export-Artikel.txt', ms); FileToStream('.\Export-Verkauf.txt', ms); FileToStream('.\Export-Kunden.txt', ms); FileToStream('.\Einstellungen.ini', ms); ms.SaveToFile('.\DB.auddb'); ms.Free; end; // Entpacken var ms: TMemoryStream; begin ms := TMemoryStream.Create; ms.LoadFromFile('.\DB.auddb'); StreamToFile(ms); StreamToFile(ms); StreamToFile(ms); StreamToFile(ms); ms.Free; end; |
Re: Mehrere Dateien in eine ZIP-Datei
Ja das ist ja schön und gut, aber ich hab mit TFileStream und TMemoryStream leider keine Erfahrung :(
|
Re: Mehrere Dateien in eine ZIP-Datei
Ja und nun sollen wir dir erklären was TMemoryStream macht und wie es funktioniert ?
Schau dir doch bitte mal ein paar Delphigrundlagen an. |
Re: Mehrere Dateien in eine ZIP-Datei
Nein ihr sollt vielleicht nur mal sagen, was da falsch ist, der Stream entpackt nämlich nur zwei Datein ordentlich und dann nicht mehr.
PS:Ich werde mir mal die Grundlagen zum TFileStream und TMemoryStream ansehen. Danke;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 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