![]() |
AW: Zip-Archiv entpacken
Nun denn!
Delphi-Quellcode:
var
zipFile: TZipFile; fileCount: Integer; filename: string; begin zipFile := TZipFile.Create; filename := 'xxx' zipFile.Open(filename, zmRead); fileCount := zipFile.FileCount; end; |
AW: Zip-Archiv entpacken
Zitat:
Wir "kennen" uns schon seit über 10 Jahren, bei mir kannst du davon ausgehen, dass ich mich vor dem Posten intensiv bemüht habe, Lösungen selbst zu finden. :wink: Zurück zum Thema "Entpacken eines Zip-Archivs" Dank eurer Hilfe habe ich nun eine Lösung zusammengestellt, mit der ein Zip-Archiv in einen Zielordner entpackt werden kann. Dabei ist eine Fortschrittsanzeige möglich und das Ende des Vorgangs kann festgestellt werden. Und das alles ohne zusätzliche Komponenten, nur mit Delphi internen Möglichkeiten! :thumb: Besonderer Dank geht an hoika! Dein Link hat mir den Anfang ermöglicht. ![]() Information am Rande: zipFile.FileCount gibt einen höheren Wert aus, als ein Datei-Zähler beim Auspacken des Zip-Archivs. Das wird im Moment zwar nicht benötigt, aber interessant wäre es, warum das so ist. Meine Vermutung ist, dass zipFile.FileCount die Ordner im Zip-Archiv mitzählt. Somit sind 2 von 3 Problemen gelöst. Fehlt nur noch die Möglichkeit zum Abbrechen eines laufenden Entpack-Vorganges. Ideen? :idea: |
AW: Zip-Archiv entpacken
Und wie sieht dein Code jetzt aus?
Abbrechen müsste in dem Fortschrittsereignis möglich sein. PS: Wir kennen uns seit 10 Jahren? :shock: Hattest du mal einen anderen Benutzernamen? |
AW: Zip-Archiv entpacken
Zitat:
Zitat:
Zitat:
|
AW: Zip-Archiv entpacken
Hat die Klasse eine Eigenschaft zum Abbrechen? Dann einfach im Progress-Eventhandler:
Delphi-Quellcode:
Oder wie auch immer die Eigenschaft heißt.
if bAbort then zipFile.Abort
|
AW: Zip-Archiv entpacken
Hallo,
im ProgressEvent einfach eine Exception erzeugen?
Delphi-Quellcode:
procedure TForm1.OnZipProgress();
begin Application.ProcessMe3ssages; // wichtig if bAbort then begin Exception.Create(''); end; end; // Button "Abbrechen"-Klick Methode procedure TForm1.OnBtnCancelClick; begin bAbort:= True; end; procedure TForm1.Entpacke; begin ... try Zipfile.Extract ... except end; end; |
AW: Zip-Archiv entpacken
Zitat:
Hat jemand eine Idee? |
AW: Zip-Archiv entpacken
Ein kurzer Blick in System.zip ...
ExtractZipFile ist übersichtlich, das "magische" passiert wiederum in "extractall" ... Auch diese ist übersichtlich und beinhaltet eine Schleife über alle Dateien. Hier fehlt schon die Option zum Abbrechen ... Im Wesentlichen ruft "ExtractAll" also "Extract" in einer Schleife auf. Hier wird dann die komplette Datei "in einem Rutsch" in einen Stream geladen, danach beschäftigt sich die Funktion im Wesentlichen darum die passende Datei (TFileStream) anzulegen. Anschließend wird "OnProgress" aufgerufen. Da ist das aber alles schon vorbei. Ich würde sagen, mit "Syste.Zip.TZipFile.ExtractZipFile" ist ein Abbrechen nicht möglich. Nächster Versuch wäre "System.ZLib", aber die ist etwas größer als dass ich da eine Aussage treffen würde. Spontan habe ich nichts mit Abbrechen-Funktion gefunden, aber wie gesagt, sicher kann ich das nicht sagen. Liebe Grüße Incocnito |
AW: Zip-Archiv entpacken
Zitat:
Zitat:
|
AW: Zip-Archiv entpacken
Da wir schon beim Entzippen sind. Kann das nun integrierte Zippen/Entzippen auch in einen Stream entzippen?
Ich habe noch ![]() Daher suche ich nach einer Alternative in Zukunft. Wenn das schon in Delphi integriert ist, wäre das meines Erachtens die beste Alternative. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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