【问题标题】:Delphi TZipMaster - how to catch exceptions?Delphi TZipMaster - 如何捕获异常?
【发布时间】:2019-03-19 19:14:49
【问题描述】:

我使用 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 事件(请参阅在线文档中的 TZMMessageEvent),可以让您拦截您引用的消息? IOW,我不确定捕获异常是否是解决您想要做的事情的正确方法。
  • 他内置的zip库会不会更容易使用
  • documentation 表示 OnMessageEvent 是您捕获错误的地方(密码错误除外,它有自己的单独事件)。因此,如果您想引发异常,请使用 OnMessageEvent 捕获错误并引发异常。此外,该组件似乎包含源代码。你不能看那里吗?
  • 那么您应该删除问题或发布答案,让人们知道问题已解决(以及如何解决)。 :-)
  • 好的,我已经完成了。

标签: delphi delphi-2007


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2019-12-28
    • 2012-12-02
    • 2014-05-25
    • 2017-03-14
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多