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

时间:2011-12-14 16:41:26

标签: delphi dialog delphi-7 shortcut

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

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

1 个答案:

答案 0 :(得分:6)

你在这里运气不好,QC 69533报告了这个错误,并在update 3 of Delphi 2009中修复了。

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

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

(仅显示部分真实代码,因为是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的{​​{1}}方法,以验证要加载的文件。

TOpenPictureDialog