AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ...
Thema durchsuchen
Ansicht
Themen-Optionen

d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ...

Ein Thema von DieDolly · begonnen am 29. Apr 2023 · letzter Beitrag vom 9. Mai 2023
Antwort Antwort
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#1

AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..

  Alt 1. Mai 2023, 13:53
Es funktioniert also nicht. Beide Bibliotheken haben dieselbenm Probleme.
Der Funktionsumfang der Bibliotheken 7z.dll, 7za.dll und 7zxa.dll unterscheidet sich erheblich. Auch die Möglichkeiten der einzelnen Kompressionsalgorithmen unterscheiden sich. Alles in allem eine große Anzahl an Kombinationen. Ein Blick in eine Beschreibung oder den Sourcecode erspart das Probieren. Die 7za.dll akzeptiert zum Beispiel für den CompressionLevel die Werte m7Copy, m7Lzma und m7Ppmd, aber nicht m7BZip2, m7Deflate und m7Deflate64. Die Exception Message "Falscher Parameter" weist darauf hin. Den ProgressCallback realisierst du wie folgt:
Delphi-Quellcode:
  ...
  private
    function ProgressCallback(const pmcSender: I7zArchive; pmCurrent, pmTotal: Int64): HRESULT;

function ...ProgressCallback(const pmcSender: I7zArchive; pmCurrent, pmTotal: Int64): HRESULT;
const
  STEP_WIDTH = 2;
var
  percentDone: Integer;
begin
  Result := S_OK;
  if pmCurrent = 0 then
  begin
    ProgressBar.Min := 0;
    ProgressBar.Max := 100;
    ProgressBar.Position := 0;
  end
  else if pmCurrent >= pmTotal then
    ProgressBar.Position := 0
  else
  begin
    percentDone := Trunc(pmCurrent / (pmTotal / 100));
    if (ProgressBar.Position + STEP_WIDTH) < percentDone then
      ProgressBar.Position := percentDone;
  end;
end;

var
  zipFileName: TFileName;
  libWriter: I7zWriter;
begin
  zipFileName := MakePath([Executable.ProgramFilePath, 'TestDaten.7z']);

  var timer: TPrecisionTimer;
  libWriter := New7zWriter(fh7z);
  libWriter.SetCompressionLevel(3);
  libWriter.SetProgressCallback(ProgressCallback);
  timer.Start;
  libWriter.AddFiles('c:\...\mORMot2\src\', '', '*', True);
  libWriter.SaveToFile(zipFileName);
  ShowMessage(timer.Stop);
Die Funktion MakePath([Executable.ProgramFilePath, 'TestDaten.7z']); macht das, was der Name sagt. Die mORMot Lösungen sind nur viel pragmatischer als die Delphi Bordmittel.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..

  Alt 1. Mai 2023, 14:06
Dass es da so einen großen Unterschied gibt, wusste ich nicht. Heißt das im Umkerhschluss, dass die 7z.dll alles drin hat?
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#3

AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..

  Alt 1. Mai 2023, 14:14
Dass es da so einen großen Unterschied gibt, wusste ich nicht. Heißt das im Umkerhschluss, dass die 7z.dll alles drin hat?
Ja, wie dokumentiert. 7za.dll hat deutlich weniger und 7zxa.dll ist fast blank.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..

  Alt 1. Mai 2023, 14:34
Das Problem, wenn man EncryptHeaders aktiviert und der Komprimierungslevel automatisch von 0 auf 9 gesetzt wird und LZMA statt Copy, ist aber bestimmt trotzdem ein Fehler der DLL.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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