我正在使用TOpenPictureDialog来浏览图片。在调试模式下,当我在此对话框中浏览图片时,我碰巧在快捷方式(.lnk)上单击(而不是双击),调试器会中断我的程序,因为它捕获异常,说它不是有效文件格式。
如何克服这个?我知道这只是在调试时间,并且在最终的EXE中没有任何问题,但它变得非常烦人,因为我希望能够通过这些快捷方式。
答案 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
列表中。
2)你可以写一个绕行(here you have a sample)并实现你自己的TOpenPictureDialog.DoSelectionChange
方法(验证.lnk
文件),因为这里是对要加载的文件进行了验证。
3)您可以使用插入器类覆盖DoSelectionChange
的{{1}}方法,以验证要加载的文件。
TOpenPictureDialog