Delphi TZipMaster - 如何捕获异常?

Delphi TZipMaster - how to catch exceptions?

我使用 Delphi TZipMaster 创建和提取 ZIP 文件。它可以工作,但问题是,当出现问题时,它不会生成异常,它会显示来自组件本身的消息。

所以在下面的代码中:

try
zipmaster1.ZipFileName := 'C:\example.zip';
zipmaster1.FSpecArgs.Clear;
zipmaster1.fspecargs.Add('installl.exe');
zipmaster1.ExtrBaseDir := 'c:\';
// the line below will show a message 'This archive is not a valid ZIP archive';
// i want it to throw an exception instead, so i can catch it and handle in my app
zipmaster1.Extract; 
except
// never will reach here
end;

我认为你不需要通过捕获异常来做你想做的事。

TZipMaster 组件有一个 OnMessage 事件 - 请在此处查看文档 http://www.delphizip.org/192/help/index.html - 您可以使用它来检测您提到的错误情况,然后根据需要采取措施,例如通过调用 TZipMaster 的 Cancel 方法。

当前错误代码被传递给OnMessage事件。无效存档消息的错误代码值为 ZE_NoValidZip,因此当该代码传递给 OnMessage 时,您可能会通过调用 Cancel 做出反应。