![]() |
Delphi-Version: 10 Seattle
Zippen einer Datei abbrechen?
Wie kann ich das Hinzufügen einer Datei zu einem Zip-Archiv
Delphi-Quellcode:
abbrechen? Es gibt zwar ein
zipFile.Add('x:\someBigFile.dat');
Delphi-Quellcode:
-Event eines
OnProgress
Delphi-Quellcode:
, aber da sehe ich keine Möglichkeit das irgendwie abzubrechen:
TZipFile
Delphi-Quellcode:
Mit der Exception komme ich zwar raus, allerdings mache ich mir etwas Sorgen um die Integrität der ZIP-Datei. Der Windows-Explorer kommt zwar mit zurecht, aber was heißt das schon?
uses System.Zip;
procedure TZipTest.handleZipProgress( Sender: TObject; FileName: string; Header: TZipHeader; Position: Int64 ); begin if(bedingungErfüllt) then raise EZipException.Create('Keine Lust mehr'); end; |
AW: Zippen einer Datei abbrechen?
Normalerweise gibt es bei OnProgress Events bzw. den zugehörigen Methoden auch einen Cancel Parameter. Mit der Zip-Komponente kenne ich mich allerdings nicht aus.
|
AW: Zippen einer Datei abbrechen?
Ohne Bezug auf die ZIP-Komponente zu nehmen, könntest du das Zippen vorerst bei einer temporären Kopie durchführen. War das hinzufügen erfolgreich, kopierst du die Temporäre Datei zurück.
|
AW: Zippen einer Datei abbrechen?
Zitat:
|
AW: Zippen einer Datei abbrechen?
Vielleicht solltest du auch mal genau beschreiben, was du erreichen willst. Denn das Zippen während des Packens abzubrechen und dann trotzdem noch eine korrekte, gültige ZIP-Datei zu erhalten wird auch mit den meisten anderen Programmen nicht funktionieren. I.d.R. wird die ZIP-Datei beim Abbrechen gelöscht.
|
AW: Zippen einer Datei abbrechen?
Zitat:
Zitat:
|
AW: Zippen einer Datei abbrechen?
Eine "Diese Datei zippen abbrechen"-Funktion wäre zwar schön, aber der Vorschlag von Pustekuchen reicht als Notlösung auch. Ich hätte nur ehrlich gesagt so etwas selbstverständliches wie ein Abbrechen erwartet.
Vielleicht kann ich, nach Überschreiten der Größe, die Datei auch wieder herausnehmen, das habe ich noch nicht geprüft. Wen es interessiert: Ich habe einen Haufen kleiner, gut komprimierbarer Dateien. Ich möchte so viele davon wie möglich einpacken bis ich an eine Obergrenze (z.B. < 5 MB) komme. |
AW: Zippen einer Datei abbrechen?
Zitat:
Delphi-Quellcode:
So nebenbei hat du auch in der ZIP-File-Größe noch Luft nach oben. :thumb:
procedure TForm1.ZipperOverallProgress(Sender: TObject;
Progress: Double; Operation: TZFProcessOperation; ProgressPhase: TZFProgressPhase; var Cancel: Boolean); begin ... end; |
AW: Zippen einer Datei abbrechen?
Ja, aber nur um einmal Dateien besser zippen zu können handele ich mir keine neuen Drittanbieter-Abhängigkeiten ein. Das ist im Delphi-Land alles schon kompliziert genug ;-)
|
AW: Zippen einer Datei abbrechen?
Wer zippt heute noch wo es schon lange bessere Alternativen gibt.
gruss |
AW: Zippen einer Datei abbrechen?
Zitat:
EDIT: Außerdem wenn er zippen will, dann soll er das doch machen. Bei uns wird das auch tagtäglich gemacht. Aber deine angesprochenen Alternativen würden mich dennoch interessieren. |
AW: Zippen einer Datei abbrechen?
Win|Rar komprimiert ein Archiv um das mindestens 50 fache.
Hat Multipart und Möglichkeiten sein Archiv zu schützen.. bzw. wieder herzustellen. Außerdem unterstützt es alle Archivarten inklusive Zip. Und es gibt sogar ![]() gruss |
AW: Zippen einer Datei abbrechen?
Naja gut. Ist aber im Prinzip auch eine Art der Kompression. Wir benutzen bei uns 7-Zip. Funktioniert genauso gut wie Win-Rar. Teilweise auch noch besser. Vorteil von 7-Zip ist eben, dass es kostenlos ist.
Aber wie er ja auch bereits angesprochen hat, will er keine Fremdkomponenten (zumindest keine zusätzlichen) nutzen. Von daher scheidet deine Lösung wohl auch aus. |
AW: Zippen einer Datei abbrechen?
Sollte keine Lösung sein sondern ein Hinweis darauf das es bessere gibt.
Zitat:
Zitat:
NUR wenn ich mir ein Limit von <-- 5 MB setzen und in diesem Archiv quasi 50 % mehr an Dateien packen kann bis das Limit erreicht ist Sehe ich den sinn nicht darin Zip zu verwenden. Und wie schon gesagt die Komponente ist frei. So wie ich sehe gibt es sogar eine Abort Funktion. Zitat:
Delphi-Quellcode:
WinRar.Abort;
Das wars dann schon. gruss |
AW: Zippen einer Datei abbrechen?
Nur leider steht da nichts von packen oder hast du das nur nicht mit zitiert?
|
AW: Zippen einer Datei abbrechen?
Zitat:
@EWeiss: Du solltest deine Beiträge nicht 1 Stunde nach dem eigentlichen absenden nochmal so grundlegend ändern. Kleinere Schreibfehler rausmachen halte ich ja noch für sinnvoll, aber so eine große Änderung. :roll: Das ließt im Nachhinein keiner mehr wenn nicht noch ein neuer Beitrag geschrieben wird und man zufällig nochmal nach oben scrollt. |
AW: Zippen einer Datei abbrechen?
Zitat:
|
AW: Zippen einer Datei abbrechen?
Letztendlich liegt es an jeden selbst was er verwenden will.
gruss |
AW: Zippen einer Datei abbrechen?
Zitat:
Beim Archivieren eines ca. 18 MB großen Ordners mit Word-Dateien erzielt WinRar ein um 200 kb besseres Ergebnis im jeweils besten Pack-Modus. In unseren Projekten verwenden wir seit Jahren ![]() Drei Tage, bevor ich mich hier angemeldet habe,gabs schonmal eine ![]() |
AW: Zippen einer Datei abbrechen?
WinRAR verwende ich zwar auch oft, hat aber den Nachteil, dass man es nicht mit Windows-Bordmitteln wieder entpacken kann. Und 7Zip hat für mich einen ganz entscheidenden Nachteil: man kann defekte Archive (weil unvollständig oder mit Fehlern) nicht mehr entpacken.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 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