Hallo NickelM,
besten Dank für Deinen Stuppser in die richtige Richtung!
Besonders das hier hat mir geholfen:
Zitat:
Edit2: Ich habe es mal so versucht, jedoch entpacket er mir nicht die Datei, vermutlich weil die Dateinamen einen "\" am Anfang haben.
Wenn man nämlich dem item einen korrekten Filenamen übergibt, dann kann man es auch sauber entpacken ("Kaum macht man's richtig, schon geht's"):
item.FileName := TargetFolder +item.PackedName;
Alles in allem sieht das nun so aus:
Delphi-Quellcode:
procedure Extract7ZipFolder(ZipFilePath,TargetFolder:
String);
var
archive: TJclCabDecompressArchive;
item: TJclCompressionItem;
s:
String;
i: Integer;
begin
archive := TJclCabDecompressArchive.Create(ZipFilePath);
// archive.OnProgress := ArchiveProgress;
try
if not (archive
is TJclSevenZipDecompressArchive)
then raise Exception.Create('
This format is not handled by 7z.dll');
archive.ListFiles;
s := Format('
test.zip Item Count: %d'#13#10#13#10, [archive.ItemCount]);
for i := 0
to archive.ItemCount - 1
do
begin
item := archive.Items[i];
case item.Kind
of
ikFile : s := s + IntToStr(i+1) + '
: ' + item.PackedName + #13#10;
ikDirectory : s := s + IntToStr(i+1) + '
: ' + item.FileName + '
\'#13#10;
end;
item.FileName := TargetFolder +item.PackedName;
// = Set a Filename (Fullpath!)
end;
if archive.ItemCount > 0
then
begin
archive.ExtractAll(TargetFolder);
end;
finally
Archive.Free;
end;
end;