Testoval jsem a z výsledků jsem rozpačitý. Abych byl více v současnosti, použil jsem
Delphi 10.2 Tokyo, 64bit architekturu. Udělal jsem si nejjednodušší testovací procedury, jednou s
TZipFile, podruhé s
TAbMakeCab, ten jsem stáhnul dnes z
GitHub.
TAbMakeCab v
Tokyo nedokáže zapakovat soubor o velikosti
2,94GB. Možná nemám někde něco zapnuté pro 64bit, ale nevím co. Rád se nechám poučit, myslel jsem, že stačí přidat Target platform 64bit Windows a aktivovat.
ZipFile zapakuje soubor o velikosti
3,91GB, to je lepší. Ale větší
4,78GB už nezabalí celý, dokonce ani neudělá chybu, jen se procedura ukončí, v logu se zobrazí
hotovo. Soubor v archivu je však useknutý, má chybný checksum a nejde vybalit.
Přikládám testovací procedury:
var
aCabWr : TAbMakeCab;
cil: string;
begin
cil := 'c:\a\pokus.cab';
Log('zacatek');
aCabWr := TAbMakeCab.Create(nil);
Try
aCabWr.CompressionType := ctMSZIP;
aCabWr.StoreOptions := [soStripDrive,soStripPath,soRemoveDots];
if FileExists(cil) then
DeleteFile(cil);
aCabWr.OpenArchive(cil);
aCabWr.AddFiles(zdroj, 0);
aCabWr.CloseArchive;
Log('hotovo');
Except
on E: Exception do begin
Log('Při zálohování došlo k chybě:'+e.Message);
end;
End; // Try, Except
aCabWr.Free;
var
pak: TZipFile;
cil: string;
begin
cil := 'c:\a\pokus.zip';
pak := TZipFile.Create;
try
try
Log('zacatek');
if FileExists(cil) then
DeleteFile(cil);
pak.Open(cil, zmWrite);
pak.Add(zdroj);
pak.Close;
Log('hotovo');
except on E: Exception do
begin
Log('Chyba: '+e.Message);
end;
end;
finally
FreeAndNil(pak);
end;
Pokračovat budu až po neděli, protože zítra a o víkendu jsem na cestách.