Ich denke mit 7z ist das einfacher und der Code ist selbsterklärend-"er".
Die Aufrufe sind analog zur sevenzip.pas.
Auf jeden Fall (jedenfalls von meiner Seite her)
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:
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;
(die auskommentierten zeilen zeigen was sich hinter meinen Indexen verbirgt)
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.