Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zippen einer Datei abbrechen? (https://www.delphipraxis.net/191674-zippen-einer-datei-abbrechen.html)

Der schöne Günther 9. Feb 2017 09:33

Delphi-Version: 10 Seattle

Zippen einer Datei abbrechen?
 
Wie kann ich das Hinzufügen einer Datei zu einem Zip-Archiv
Delphi-Quellcode:
zipFile.Add('x:\someBigFile.dat');
abbrechen? Es gibt zwar ein
Delphi-Quellcode:
OnProgress
-Event eines
Delphi-Quellcode:
TZipFile
, aber da sehe ich keine Möglichkeit das irgendwie abzubrechen:
Delphi-Quellcode:
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;
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?

Luckie 9. Feb 2017 12:15

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.

pustekuchen 9. Feb 2017 12:51

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.

Neutral General 9. Feb 2017 12:55

AW: Zippen einer Datei abbrechen?
 
Zitat:

Zitat von pustekuchen (Beitrag 1361170)
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.

Ich denke er will eher eine "Abbrechen"-Funktion haben. Da hilft dein Vorschlag leider nicht.

bra 9. Feb 2017 13:17

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.

pustekuchen 9. Feb 2017 13:48

AW: Zippen einer Datei abbrechen?
 
Zitat:

Zitat von Neutral General (Beitrag 1361171)
Ich denke er will eher eine "Abbrechen"-Funktion haben. Da hilft dein Vorschlag leider nicht.

Allerdings hilft das die Integrität der ZIP-Datei zu gewährleisten.
Zitat:

Zitat von Der schöne Günther (Beitrag 1361139)
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?


Der schöne Günther 9. Feb 2017 14:59

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.

mm1256 9. Feb 2017 16:19

AW: Zippen einer Datei abbrechen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1361179)
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....

Na ja, meistens ist das liebe Geld dran schuld. Eine vernünftige ZIP-Komponente kauft man einmal und dann nie wieder. ZipForge zum Beispiel kann einen ZIP-Vorgang abbrechen.
Delphi-Quellcode:
procedure TForm1.ZipperOverallProgress(Sender: TObject;
  Progress: Double; Operation: TZFProcessOperation;
  ProgressPhase: TZFProgressPhase; var Cancel: Boolean);
begin
  ...
end;
So nebenbei hat du auch in der ZIP-File-Größe noch Luft nach oben. :thumb:

Der schöne Günther 9. Feb 2017 16:43

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 ;-)

EWeiss 9. Feb 2017 17:10

AW: Zippen einer Datei abbrechen?
 
Wer zippt heute noch wo es schon lange bessere Alternativen gibt.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz