Ich nutze folgende Funktion, um eine Datei aus einer Zipdatei zu entpacken. Das klappt in den meisten Fällen gut, aber bei verschiedenen Zip-Dateien kommt die Meldung "Die angegebene Datei wurde nicht gefunden xxxx/xxxx/xxx".
Oder kann es sein, dass System.Zip nicht alle Zipversionen kennt?
Die Datei, die ich suche, liegt in einem Unterpfad.
Wenn ich eine andere Datei extrahieren will, die in der Root der Zipdatei liegt, gibt es keine Problem.
Wenn ich aber die Funktion Zip.ExtractAll nutze, wird die Datei neben allen anderen Dateien sauber extrahiert.
Nun wollte ich in System.Zip debuggen. Aber da hält der Debugger nicht an. Kann es damit zu tun haben, dass System.Zip scheibgeschützt unter den Programm Files liegt?
Delphi-Quellcode:
Result := false;
Zip := TZipFile.Create;
try
try
Zip.Open(SrcfName, zmRead);
if fNames2Extract.Count > 0
then begin
for I := 0
to fNames2Extract.Count -1
do begin
s := StringReplace((fNames2Extract[i]), '
\', '
/', [rfReplaceAll]);
//231012-01
//231012-01
//Wenn Datei nicht existiert, müssen wir das mit abfangen
try
Zip.Extract(s, DstDir, false);
//Original
except
on E:
Exception do
begin
ShowMessage(E.
Message + '
"' + s + '
"');
//211107-01
raise;
end;
end;
end;
end;
result := true;
except
ShowMessage('
Fehler bei EntzipOneFile');
end;
Zip.Close;
finally
Zip.Free;
end;