![]() |
System.Zip Onprogress
Ich habe eines meiner Programme nun auf System.Zip umgestellt, wollte aber auch den Fortschritt darstellen.
Leider komme ich nicht weiter. ![]() Ich habe die Ziproutinen in eine Unit gepackt, die wie folgt aussieht:
Delphi-Quellcode:
Was mache ich falsch?
procedure OnZipProgressEvent(Sender: TObject; FileName: string; Header: TZipHeader; Position: Int64);
begin if PreviousFilename <> FileName then begin // StaticText1.Caption := ExtractFileName(FileName); PreviousFilename := FileName; fMain.UpdateZipProgressPosition(0); end else fMain.UpdateZipProgressPosition((Position * 100) div Header.UncompressedSize); //Application.ProcessMessages; end; function EntzipAllFiles(Srcfname, DstDir: string): boolean; var Zip : TZipFile; begin Result := false; Zip := TZipFile.Create; try Zip.ExtractZipFile(SrcfName, DstDir, OnZipProgressEvent); >> Fehler E2250 Es gibt keine überladene Version von Extractzipefile Zip.Close; Result := true; finally Zip.Free; end; end; |
AW: System.Zip Onprogress
Zitat:
Bis bald... Thomas |
AW: System.Zip Onprogress
Sprich, wenn du die lose herumliegenden Funktionen in eine Klasse verpackst, klappt es.
Und wenn du dann noch den direkten Zugriff auf das Formular aus einer solchen Unit korrigierst, hast du auch keine Kreuzbeziehung mehr zwischen den Units (die ich aktuell vermute). Du könntest z.B. an deine Entpackroutine eine Referenz auf UpdateZipProgressPosition mitgeben, ein Interface verwenden oder ähnliches. |
AW: System.Zip Onprogress
Es muß nichtmal eine Klassen-Instanz sein.
Eine Class-Function reicht auch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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-2025 by Thomas Breitkreuz