Einzelnen Beitrag anzeigen

zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#1

System.Zip Entpacken einer Datei

  Alt 26. Jan 2024, 17:10
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;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat