Ja WAS willst du denn da wissen?
Was ist denn daran unverständlich?!?!?
Du erzeugst einen Filestream zum schreiben. Dann öffnest du den TCompressionStream aus der zLib und übergibst ihm die Komprimierungsparameter (clNone, clFastest, clMax, clDefault) und den Filestream als Parameter. Dann schreibst du in den Compressionstream und machst anschließend beide wieder zu (zuerst den Compressionstream, dann den Filestream).
Ist wie normales Stream-Management auch!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var FS: TFileStream; ZS: TCompressionStream; buf: PChar; begin FS := TFileStream.Create('C:\test.z', fmCreate); ZS := TCompressionStream.Create(clMax, FS); GetMem(buf, 12 + 1); buf := 'Hello, world'; ZS.Write(buf^, StrLen(buf)); zs.Free; fs.Free; end; |
Zugegeben, ich wusste damals auch noch nicht, was ich mit der Unit anfangen soll und hab' gefragt, aber meine Frage wurde beantwortet, du kannst also nicht sagen, daß die Suche hier im Forum nichts ergeben hat!!!
Bzip2 ist von der Kompressionsleistung besser als zip, allerdings ist es nicht sehr weit verbreitet (eigentlich nur unter Linux) und es gibt keinen vorgeschriebenen Standard für mehrere Dateien in einem Archiv, eben weil es hauptsächlich unter Linux eingesetzt wird (weil Windows-Anwender nunmal träge sind *g*) und dort bevorzugt vorher ein Tarball erzeugt wird, wie es zu gzip-Zeiten auch war. Allerdings kann man wie bei zip auch, eine Datenbank als Dateiheader vorne einfügen, damit man mehrere Dateien in einem Archiv verwalten kann. Es ist nur nicht üblich, daher werden andere Programme wohl Probleme mit dem Entpacken bekommen (und den gesamten binären Inhalt einfach in eine Datei schreiben, anstatt jede Datei einzeln zu speichern).
Noch besser als Bzip2 ist übrigens das ACE-Format, bei dem auch wieder ein vereinbarte Standard für mehrere Dateien in einem Archiv definiert ist. Allerdings kenne ich keine Pascal-/Delphi-Unit für ACE (ich weiß nichtmal, ob ACE überhaupt offengelegt ist und es nicht-kommerzielle Versionen davon gibt).
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.