![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Всем привет!
Допустим, есть код, который загружает растровое изображение из файла в TBitmap: Код:
SomeBitmap.LoadFromFile('somefile.bmp');Если же юзер, например, попросит программу загрузить изображение из файла иного формата, то вылетит исключение EInvalidGraphic. Причем определять формат файла нам надо не по расширению имени, а по содержанию (файл может быть переименован, и расширение может отличаться от .bmp). Выполнение в блоке "try .. except on E: EInvalidGraphics do ..." ничего не дает, исключение возникает все равно. Не могу найти ничего по своей теме, потому спрошу здесь: существует ли какой-нибудь способ перед загрузкой битмапа удостовериться, действительно ли это битмап? |
|
#2
|
||||
|
||||
|
Пардон, проблема решена самостоятельно. Покопался в модуле Graphics и скомбинировал функцию проверки:
Код:
function IsBitmap(const FileName: string): boolean;
var Bmf: TBitmapFileHeader;
S: TStream;
begin
S:=TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
S.ReadBuffer(Bmf, SizeOf(Bmf));
Result:=Bmf.bfType = $4D42;
S.Free;
end; |
|
#3
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Остановка отключается какой-нибудь директивой препроцессора, или надо смотреть в настройках IDE?
|
|
#5
|
||||
|
||||
|
В настройках IDE точно отключается. А вот директивы похоже нет (могу ошибаться, но не нашел).
|
| Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
Lothlorien (24.02.2019)
| ||
|
#6
|
||||
|
||||
|
Спасибо, попробую
![]() |