AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo,
nur so am Rande: Von welcher 7Zip.dll reden wir (siehe Anhang)? Ich habe folgende im Angebot: https://github.com/mail2nnv/d7zip = m2n.png https://github.com/geoffsmith82/d7zip = hg_x86, hg_x64 Unbekannt = Unbekannt KodeZwerg = m2n (bezogen auf die Versions-Nr. 4.65.0.0 |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
Beispiele sind z.B. die Funktionen von MIDAS (MidasLib.pas), ZLib (System.ZLib.pas oder IdZLibHeaders.pas), RegEx (System.RegularExpressionsAPI.pas > System.RegularExpressions.pas), JPEG (Vcl.Imaging.jpeg.pas), PNG (nicht mehr) oder Delayed-Loading (SysInit.pas). Die DLL in den Resourcen mußt du erst draußen speichern, um sie zu laden, oder etwas böser in den RAM laden und manuell von dort laden. (und hoffen der Virenscanner hat nix dagegen) Theoretisch kann man nahezu jeden C++-Code als OBJ kompileren und so ins Delphi pringen. Ich bin noch am Experimentieren, GIT so ins Delphi zu bekommen, also um optimaler damit zu arbeiten. (Beispiel ist TortoiseGit, welches teilweise die GitLib integriert hat, aber auch teilweise direkt mit der GIT.exe redet ... z.B. Krank beim Revert jede Datei mit je zwei GIT.exe-Aufrufen extrem langsam und Anderes aber intern sehr schnell) Zitat:
https://7-zip.de/download.html |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
Zitat:
Ich habe es so versucht, jedoch ohne Erfolg beim umstellen des SetCompressionLevel, da ich daran schon scheitere habe ich die weiteren features nicht weiter angerührt.
Delphi-Quellcode:
(die auskommentierten zeilen zeigen was sich hinter meinen Indexen verbirgt)
procedure TfrmMain.btnCreateClick(Sender: TObject);
var zipFileName: TFileName; libWriter: I7zWriter; begin zipFileName := MakePath([Executable.ProgramFilePath, 'TestDaten.7z']); if (cbFormat.ItemIndex <= 0) then cbFormat.ItemIndex := 7; libWriter := New7zWriter(T7zFormatHandler(cbFormat.ItemIndex), '7z.dll'); // libWriter := New7zWriter(fh7z, '7z.dll'); libWriter.SetCompressionLevel(cbLevel.ItemIndex); // libWriter.SetCompressionLevel(0); // von 0 bis 9 alle getestet, es kommt immer das gleiche raus libWriter.SetCompressionMethod(TZipCompressionMethod(cbMethod.ItemIndex)); // libWriter.SetCompressionMethod(mzLzma); libWriter.AddFile('7z.dll', '7z.dll'); libWriter.SaveToFile(zipFileName); libWriter := Nil; end; Aber sehr positiv zu erwähnen, BZip2 funktioniert. Da ich in der mormot.lib.win7zip.pas Datei leider keine Informationen finde auf welcher Bibliothek-Version es basiert habe ich es mit der aktuellen 64bit 7z.dll (22.1.0.0) getestet. |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
|
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
Delphi-Quellcode:
Benchmark-Werte:
var
zipFileName: TFileName; libReader: I7zReader; libWriter: I7zWriter; content: RawByteString; begin content := StringFromFile(MakePath([Executable.ProgramFilePath, 'mormot.lib.openssl11.pas'])); zipFileName := MakePath([Executable.ProgramFilePath, 'TestDaten.7z']); libWriter := New7zWriter(fh7z); libWriter.SetCompressionLevel(7); // x Parameter (1/3/5/7/9) libWriter.AddBuffer('Lib\mormot.lib.openssl11.pas', content); libWriter.SaveToFile(zipFileName); libWriter := Nil; libReader := New7zReader(zipFileName); var libData: RawByteString := libReader.Extract('Lib\mormot.lib.openssl11.pas'); if (Length(content) = Length(libData)) and CompareMem(Pointer(content), Pointer(libData), Length(content)) then begin ShowMessage('Ok!'); end;
Bis bald... Thomas |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Thomas Dankeschön für Dein weiteres Beispiel samt Erklärung und den Link!
Delphi-Quellcode:
Das mag er nicht, habe es nun mit der 64bit 7za.dll v22.1.0.0 (ohne dll Angabe) erfolgreich getestet (Level 0 = copy, alles darüber ist LZMA2)
libWriter.SetCompressionMethod();
(Ich bin beim AddFile() geblieben) Zitat:
|
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
Selbes gilt übrigens auch für ZIP. LZ4 wäre hier eine nette Sache, aber eigentlich hätte ich es gern in einer zip-Datei, anstatt in einer 7z. Und auch wenn man hier 7-Zip dafür verwenden könnte etwas im Buffer/RAM zu komprimieren. Eine sauschnelle Komprimierung bietet viele Vorteile (auch wenn es nicht unbedingt extrem viel Platz einspart) |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
|
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
Allerdings warte ich jeden Tag darauf, dass die Virenscanner darauf allergisch reagieren. |
AW: d7zip / sevenzip.pas von mail2nnv - Fragen zur Funktionsweise, DictionarySize, ..
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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