gpt4 book ai didi

delphi - 在 TOpenPictureDialog 中浏览非图像时,如何避免调试器停止我的程序?

转载 作者:行者123 更新时间:2023-12-03 19:10:57 25 4
gpt4 key购买 nike

我正在使用 TOpenPictureDialog 来浏览图像。在 Debug模式下,当我在此对话框中浏览图片并且碰巧单击(不是双击)快捷方式 (.lnk) 时,调试器会中断我的程序,因为它捕获到异常,说它不是有效文件格式。

如何克服这一点?我知道它只是在调试时间,在最终的 EXE 中没有任何问题,但它变得非常烦人,因为我希望能够通过这些快捷方式。

最佳答案

您在这里运气不好,此错误已在 QC 69533 中报告。并在 update 3 of Delphi 2009 中修复.

VCL 用于验证文件是否为有效图像的代码不检查快捷方式文件 (.lnk),因此 VCL 认为该文件是有效图像并尝试加载该文件,然后引发 EInvalidGraphic异常(exception)。

该异常仅在调试器中引发,因为这样的代码用于检查验证文件名。

(因为是VCL代码,所以只展示部分真实代码)

ValidPicture := FileExists(FullName) and ValidFile(FullName);
if ValidPicture then
try
// here try to load the file even if is a shortcut(.lnk)

except //this exception is caught by the debugger.
ValidPicture := False;
end;

解决方法

1) 您可以将 EInvalidGraphic 异常添加到 exceptions list to ignore列表。

enter image description here

2)你可以写一个弯路( here you have a sample)并实现你自己的 TOpenPictureDialog.DoSelectionChange方法(验证 .lnk 文件),因为这里是验证要加载的文件的地方。

3) 你可以覆盖 DoSelectionChange TOpenPictureDialog 的方法使用插入器类来验证要加载的文件。
  TOpenPictureDialog= class (ExtDlgs.TOpenPictureDialog)
procedure DoSelectionChange; override;
end;

关于delphi - 在 TOpenPictureDialog 中浏览非图像时,如何避免调试器停止我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com