Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem nach dem entpacken einer Zip Datei (https://www.delphipraxis.net/156983-problem-nach-dem-entpacken-einer-zip-datei.html)

Peter60 23. Dez 2010 07:42


Problem nach dem entpacken einer Zip Datei
 
Hallo ich habe folgendes Problem ich habe eine Zip-Datei einpackt und möchte eine enpackte Datei umbennen. Aber ich bekomme keinen Zugriff auf diese Datei und kann dies Datei daher nicht umbennen.
Vieleicht hat jemand eine Tipp für micht

Code Ausschnitt
Delphi-Quellcode:
if FileExists('xyz.zip') then
begin
   // Daten entpacken
   archiver := TZipMaster19.Create(self);
   try
     with archiver do
     begin
       FSpecArgs.Clear;
       ZipFilename := 'xyz.zip';
       ExtrBaseDir := myDir;
       Extract;
     end;
     archiver.Free;
   except
    archiver.Free;
    Exit;
   end;
   IF RenameFile(myDir + 'FERTIG.DAT', myDir + 'STOP.DAT') then // gibt ständig false
   begin
     // tu irgendwas
   end;
end;

Bernhard Geyer 23. Dez 2010 07:44

AW: Problem nach dem entpacken einer Zip Datei
 
Wenn du deinen Quellcode anständig formatieren würdest (Helm-Icon in der Toolbarleiste des Editors) könnnte man leichter verstehen was der Code macht.

Peter60 23. Dez 2010 07:50

AW: Problem nach dem entpacken einer Zip Datei
 
Ist erledigt!

DeddyH 23. Dez 2010 07:55

AW: Problem nach dem entpacken einer Zip Datei
 
Wieso nimmst Du keinen try-finally-Block? Das sieht so etwas komisch aus. Und dann entpackst Du nach MyDir und willst anschließend in MDEDIR nach den entpackten Dateien suchen. Bist Du sicher, dass das so richtig ist?

Peter60 23. Dez 2010 08:00

AW: Problem nach dem entpacken einer Zip Datei
 
Sorry das war mein Fehler ich den Codeausschnitt zusammengeschrieben MyDir = MDEDir.
except Teil soll nur durchlaufen wenn beim entpacken ein Fehler auftritt und
entsprechend behandelt werden

Bernhard Geyer 23. Dez 2010 08:03

AW: Problem nach dem entpacken einer Zip Datei
 
1, Aufruf von FileExists ohne Pfadangabe ist ungünstig da du dann darauf angewiesen bist was das aktuelle Verzeichnis deines Programms ist

2, Beinhaltet myDir ein Abschließenden Backslash?

DeddyH 23. Dez 2010 08:03

AW: Problem nach dem entpacken einer Zip Datei
 
Und die STOP.DAT gibt es definitiv noch nicht? Evtl. wäre es günstiger, statt RenameFile Windows.MoveFile zu benutzen und im Fehlerfall mit GetLastError zu ermitteln, was da nicht funktioniert.

himitsu 23. Dez 2010 08:09

AW: Problem nach dem entpacken einer Zip Datei
 
Delphi-Quellcode:
  ...
  archiver.Free; <<< *
except
  archiver.Free;
  Exit;
end;
Wenn dort * eine Exception auftritt, was wird dann wohl passieren?
Außerdem unterdrückst du so einfach eine Fehlermeldung, so daß man garnicht weiß, warum es schief lief.

Zitat:

gibt ständig false
Dann frag doch mal nach, warum es das tut?

Delphi-Quellcode:
if FileExists('xyz.zip') then
begin
  // Daten entpacken
  archiver := TZipMaster19.Create(self);
  try
    with archiver do
    begin
      FSpecArgs.Clear;
      ZipFilename := 'xyz.zip';
      ExtrBaseDir := myDir;
      Extract;
    end;
  finally
    archiver.Free;
  end;
  IF RenameFile(myDir + 'FERTIG.DAT', myDir + 'STOP.DAT') then
  begin
    // tu irgendwas
  end else
    RaiseLastOSError;
end;
Und wie sieht der Pfad in myDir aus?

[add] Delphi-Referenz durchsuchenRenameFile kapselt MSDN-Library durchsuchenMoveFile ... also kann man danach ebenso MSDN-Library durchsuchenGetLastError, GetLastError + MSDN-Library durchsuchenSysErrorMessage oder einfach Delphi-Referenz durchsuchenRaiseLastOSError nutzen.

Peter60 23. Dez 2010 08:10

AW: Problem nach dem entpacken einer Zip Datei
 
Bei if FileExists(... ist auch ein myDir vorangestellt und haben einen abschließenden Backslash.
Eine STOP.DAT ist nicht vorhanden das Verzeichnis vor dem entpacken leer ist.
Ich habe vorher die Componente Zipforge, da hat es problemlos funktioniert.

Peter60 23. Dez 2010 08:16

AW: Problem nach dem entpacken einer Zip Datei
 
Danke, besonders an himitsu da war wohl ein Knoten im Hirn


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz