Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   System.Zip Onprogress (https://www.delphipraxis.net/214079-system-zip-onprogress.html)

zeras 12. Nov 2023 17:13

System.Zip Onprogress
 
Ich habe eines meiner Programme nun auf System.Zip umgestellt, wollte aber auch den Fortschritt darstellen.
Leider komme ich nicht weiter.
Hier wird es ein wenig erklärt.
Ich habe die Ziproutinen in eine Unit gepackt, die wie folgt aussieht:

Delphi-Quellcode:
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;
Was mache ich falsch?

mytbo 12. Nov 2023 19:17

AW: System.Zip Onprogress
 
Zitat:

Zitat von zeras (Beitrag 1529554)
Was mache ich falsch?

TZipProgressEvent ist eine "procedure of object", die Umsetzung in deinem Beispiel aber nicht.

Bis bald...
Thomas

jaenicke 12. Nov 2023 21:18

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.

himitsu 13. Nov 2023 00:33

AW: System.Zip Onprogress
 
Es muß nichtmal eine Klassen-Instanz sein.
Eine Class-Function reicht auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.

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