Вам не повезло, эта ошибка была зарегистрирована в QC 69533 и исправлена в обновлении 3 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) вы можете написать обход ( здесь у вас есть образец ) и реализовать свой собственный метод TOpenPictureDialog.DoSelectionChange
(проверка файлов .lnk
), потому что здесь производится проверка файлов для загрузки.
3) вы можете переопределить DoSelectionChange
метод TOpenPictureDialog
с помощью класса interposer для проверки загружаемых файлов.
TOpenPictureDialog= class (ExtDlgs.TOpenPictureDialog)
procedure DoSelectionChange; override;
end;