Do obsługi archiwów ZIP w celach rekreacyjnych używam komponentu AbbreviaZIP 5.0 (najnowsza wersja) dla Delphi 7, tyle o ile przy małych plikach co do tempa dekompresji nie mam zastrzeżeń, to już przy plikach +200MB szybkość spada.
Ja wiem, że tempo zależy od rozmiaru pliku i obciążenia procka, ale z ciekawości rozpakowałem testowe archiwum przy pomocy 7zip'a i mojego archivera, mój archiver potrzebował ~36min więcej żeby rozpakować to archiwum o łącznej wadze 1GB.
Początkowo myślałem, że taka różnica jest spowodowana kontrolką AlphaSkins i tymczasowo ją wyłączyłem z apki, ale efekt jest ten sam.
tutaj zamieszczam kod do wypakowywania:
try
if not (DirectoryExists(install_path)) then
begin
ForceDirectories(install_path);
end
else
if AcceptedRules then
begin
try
Unzip.BaseDirectory := install_path;
try
Unzip.FileName := 'data';
try
Unzip.ArchiveType := atZip;
try
sButton1.Enabled := false;
Unzip.TagItems('*');
Unzip.ExtractTaggedItems;
except
on e:Exception do ShowMessage(GetError);
end;
except
on e:Exception do ShowMessage(GetError);
end;
except
on e:Exception do ShowMessage(GetError);
end;
except
on e:Exception do ShowMessage(GetError);
end;
end
else
ShowMessage('ACCEPT_RULES');
finally
ShowMessage('All done');
end;
(Rzecz jasna, mogę użyć ExtractFiles(mask: string); ale chciałem rzucić ten kod na oddzielny wątek)