2016-05-27 7 views
1

Wie ignoriert Fehler 00033? Dieser Fehler tritt auf, weil ein anderer Prozess die Datei verwendet.Wie verwenden Sie fxaIgnore in TZFProcessFileFailureEvent

Image 1 Image 2

Es ist möglich, die Event-Handler zu ändern, so dass, wenn der Fehler 00033 erscheint er die Datei ignorieren und zum nächsten springen?

type TZFProcessFileFailureEvent = procedure ( 
Sender: TObject; 
FileName: String; 
Operation: TZFProcessOperation; 
NativeError: Integer; 
ErrorCode: Integer; 
ErrorMessage: String; 
var Action: TZFAction 
) of object; 

type TZFAction = (fxaRetry, fxaIgnore, fxaAbort); 

property OnProcessFileFailure: TZFProcessFileFailureEvent; 

meinen Code für Zip-Dateien ...

var 
    archiver : TZipForge; 

begin 
    // Create an instance of the TZipForge class 
    archiver := TZipForge.Create(nil); 
    try 
    with archiver do 
    begin 
    // Set the name of the archive file we want to create 
    FileName := 'C:\test.zip'; 
    // Because we create a new archive, 
    // we set Mode to fmCreate 
    OpenArchive(fmCreate); 
    // Set base (default) directory for all archive operations 
    BaseDir := 'C:\'; 
    // Add files to the archive by mask 
    AddFiles('*.exe'); 
    CloseArchive(); 
    end; 
    except 
    on E: Exception do 
    begin 
     Writeln('Exception: ', E.Message); 
     // Wait for the key to be pressed 
     Readln; 
    end; 
    end; 
end. 
+0

Keines Ihrer Bilder war notwendig. In jedem Delphi-Ausnahmedialog können Sie Strg + C drücken, um die Fehlermeldung als Text in die Zwischenablage zu kopieren und dann hier in Ihre Frage einzufügen. Bilder sollten nur * verwendet werden, wenn es keine andere Möglichkeit gibt, das Problem zu demonstrieren. [Hier ist ein Meta-SO-Post] (http://meta.stackoverflow.com/a/285557/62576), der die vielen Gründe auflistet, um das Posten von Bildern zu vermeiden. –

+0

Danke, ich wusste nicht, dass es möglich war, die im Ausnahmedialog zurückgegebenen Fehler zu kopieren. – 0x66616b65

Antwort

2

Haben Sie versucht, Code wie folgt zu Ihrem OnProcessFileFailure Handler hinzugefügt

if NativeError = 1033 then 
    Action := fxaIgnore; 

?

Auch wenn für die von Ihnen verwendete Zipping-Bibliothek keine Dokumentation verfügbar ist, besteht der Hinweis darin, dass der Parameter Action des TZFProcessFileFailureEvent-Ereignisses als var-Parameter deklariert ist. Das bedeutet, dass jede Änderung an seinem Wert, die Sie innerhalb des Handlers vornehmen, an den Code zurückgegeben wird, der den Event-Handler aufgerufen hat, damit Sie ihm signalisieren können, wie er auf das Ereignis reagieren soll.

BTW, Ich bin mir nicht sicher, warum Sie Ihr Bild1 in Ihrem q enthalten, weil Sie nicht danach gefragt haben. Wenn Sie wissen möchten, wie Sie mit einem bestimmten Ausnahmetyp umgehen, wie z. B. EFOpenError in einem Ausnahmebehandler, finden Sie in der Delphi-Onlinehilfe Informationen dazu.