Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi JCLCompression wann ist extraction fertig? (https://www.delphipraxis.net/128398-jclcompression-wann-ist-extraction-fertig.html)

stOrM 29. Jan 2009 08:30


JCLCompression wann ist extraction fertig?
 
Hallo,
ich fummel gerade mit der JCLCompression Unit rum, klappt eigentlich auch alles soweit wunderbar, bis auf die Kleinigkeit:
Wie stelle ich fest, wann die Datei komplett extrahiert wurde?

Es gibt zwar die Methode: OnProgress womit ich meine Progressbar update, nur irgendwie ist das sehr ungenau?!
Manchmal stoppt die Progressbar bei 93 % bei einer anderen Datei bei 99 wiederum ein anderes mal bei 98% jenachdem ob ich nun Zip, Rar oder 7z als Eingangsformat hab.

Eine Methode in etwa wie OnExtractFinished oder sowas in der Art konnte ich leider bisher nicht entdecken, vielleicht kann mir mal jemand auf die Sprünge helfen? :gruebel:

Viele Grüße
s!

Assertor 29. Jan 2009 08:37

Re: JCLCompression wann ist extraction fertig?
 
Hi,

ich vermute als System wird Vista verwendet. Liegt an dem neuen "visuellen Feedback" das Vista erzeugt. Kurz gesagt: Der ProgressBar hat 100% als Wert, aber die Anzeige läuft verzögert durch die Animation, damit es "weicher" aussieht.

Der Trick ist, den ProgressBar zum Ende auf .Max zu prüfen, die Position dann auf .Max-1 und wieder auf .Max zu setzen. Durch das -1 wird der ProgressBar rückwärts bewegt - da springt Vista sofort statt zu animieren. Danach wird dieser wieder auf .Max gesetzt, damit alles stimmt.

Delphi-Quellcode:
  with ProgressBar1 do
  if Position = Max then
  begin
    Position := Max-1;
    Position := Max;
  end;
Ich hab da mal eine gründliche Erklärung dazu im Codegear Forum gepostet. Kannst auch hier im Forum mal nach ProgressBar und meinem Nick suchen. Unter Umständen gibt es auch hier etwas dazu. Ansonsten poste ich das heute Abend.

Gruß Assertor

stOrM 29. Jan 2009 08:50

Re: JCLCompression wann ist extraction fertig?
 
Zitat:

Zitat von Assertor
Hi,

ich vermute als System wird Vista verwendet. Liegt an dem neuen "visuellen Feedback" das Vista erzeugt. Kurz gesagt: Der ProgressBar hat 100% als Wert, aber die Anzeige läuft verzögert durch die Animation, damit es "weicher" aussieht.

Der Trick ist, den ProgressBar zum Ende auf .Max zu prüfen, die Position dann auf .Max-1 und wieder auf .Max zu setzen. Durch das -1 wird der ProgressBar rückwärts bewegt - da springt Vista sofort statt zu animieren. Danach wird dieser wieder auf .Max gesetzt, damit alles stimmt.

Delphi-Quellcode:
  with ProgressBar1 do
  if Position = Max then
  begin
    Position := Max-1;
    Position := Max;
  end;
Ich hab da mal eine gründliche Erklärung dazu im Codegear Forum gepostet. Kannst auch hier im Forum mal nach ProgressBar und meinem Nick suchen. Unter Umständen gibt es auch hier etwas dazu. Ansonsten poste ich das heute Abend.

Gruß Assertor

Voll ins schwarze getroffen!
Vielen dank!!!

Gruß
s!

Assertor 29. Jan 2009 15:52

Re: JCLCompression wann ist extraction fertig?
 
Hi storm,

Zitat:

Zitat von stOrM
Voll ins schwarze getroffen!
Vielen dank!!!

Gruß
s!

Bitte gern :)

:dp:

Gruß Assertor


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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