![]() |
"Entpacker" erstellen (zip.datei)
Hey Leute,
Ich versuche derzeit einen kleinen "Entpacker" zu programmieren. Ich schaffe es eine .zip datei zu erstellen die auch Größe hat, aber ich kann die .zip Datei nicht mit einem "richtigen" Entpacker entpacken. Ich benutze D7 und die Zlib Unit. So packe ich zusammen
Delphi-Quellcode:
Das Problem ist:
procedure Compress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream; CompressionStream: ZLib.TCompressionStream; begin inputstream := Tfilestream.Create(InputFileName, fmOpenRead); try OutputStream:=TFileStream.Create(OutputFileName, fmCreate); try CompressionStream:=TCompressionStream.Create(clMax, OutputStream); try CompressionStream.CopyFrom(InputStream, InputStream.Size); finally CompressionStream.Free; end; finally OutputStream.Free; end; finally InputStream.Free; end; end; procedure Decompress(InputFileName, OutputFileName: string); var InputStream, OutputStream: TFileStream; DeCompressionStream: ZLib.TDeCompressionStream; Buf: array[0..4095] of Byte; Count: Integer; begin InputStream:=TFileStream.Create(InputFileName, fmOpenRead); try OutputStream:=TFileStream.Create(OutputFileName, fmCreate); try DecompressionStream := TDecompressionStream.Create(InputStream); try while true do begin Count := DecompressionStream.Read(Buf[0], SizeOf(Buf)); if Count = 0 then break else OutputStream.Write(Buf[0], Count); end; finally DecompressionStream.Free; end; finally OutputStream.Free; end; finally InputStream.Free; end; end; // erst mal nur packen procedure TForm1.sButton1Click(Sender: TObject); begin savedialog1.Execute; speicher := savedialog1.FileName; Compress(pfadn,speicher+'.zip');// pfadn = die Dateien in der Listbox , Speicher = der Speicherort wo die .zip Datei erstellt werden soll. end; Wenn ich die .zip Datei entpacken will kommt die Fehlermeldung von meinem Entpacker "Error this file Format cannot be extracted" |
Re: Zip
TCompressionStream komprimiert nur, aber es erstellt den nötigen ZIP-File-Header nicht, welcher zum Zip-Dateiformat gehört.
Wenn ich mich nicht irre, so wurde dieses "Problem" schon ein-/zweimal in anderen Threads behandelt. |
Re: Zip
Wie erstelle ich den "Header". Was ist das überhaupt
|
Re: Zip
![]() Der "Header" beschreibt was wo und in welchem Format in der Datei liegt. TCompressionStream erstellt aber nur die Daten, also es komprimiert nur den Dateiinhalt. Die Daten/Informationen über Dateiname, sonstige Informationen, wie Dateigröße, Datum usw. und vorallem wo in der Datei der komprierte Dateiinhalt liegt, daß müßtest du selber erstellen. Oder du vberwendest eine ZIP-Komponente, welche diesen Header verwaltet. Mir fällt zwar grad kein Komponentenname ein, aber dieses sollte sich in den anderen ZIP-Threads finden lassen > ![]() ![]() ![]() |
Re: Zip
|
Aussagekräftiger Titel
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.
|
Re: Zip
Nichtsdestotrotz werfe ich mal wieder
![]() |
Re: "Entpacker" erstellen (zip.datei)
Das scheit ja schon mal nicht schlecht zu sein... muss nur noch lernen wie man damit umgeht..
|
Re: "Entpacker" erstellen (zip.datei)
ich nehme immer ZipForge von ComponentAce
|
Re: "Entpacker" erstellen (zip.datei)
Ich habe es nun mit der Abbrevia Komponente gemacht. So ich schaffe es nun ein .zip Datei zu erstellen. Aber wie bekomme ich mehrere Dateien in die .zip ? ( Soll ich neues Thema aufmachen?)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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 by Thomas Breitkreuz