Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

JPEG error + on E: Exception


Страницы:   1 2

SIV5000 ©   (2011-07-12 16:36:00) 

Народ привет. Подскажите пожалуйста как обработать Exception при загружке попорченого JPEG файла (exception class EJPEG with message 'JPEG error #42'.).
Кажеться правильно но что интересно так ето то что ошибка возникает не при  JPG.LoadFromFile а при Image1.Picture.Assign.

var
JPG:TJpegImage;
begin
JPG:= TJpegImage.Create;
JPG.LoadFromFile('C:\Sony\DSC05107.jpg');
try
 Image1.Picture.Assign(JPG);  
 except
 on E: Exception do begin
   JPG.free;
  end;
 end;
JPG.free;
end;


Юрий Зотов   (2011-07-13 13:21:00) [21]

> SIV5000   (12.07.11 20:48) [3]

> Окно то и должно по идее в "except  on E: Exception" не появляться (что мне и надо).

Прятать ошибки - это ОЧЕНЬ плохая практика.


Andy BitOff   (2011-07-12 23:19:00) [22]

> Так как же отловить это?

http://www.codenet.ru/progr/formt/jpeg_13.php


SIV5000   (2011-07-12 22:59:00) [23]

Короч. Заметил что глюк этот только (пока что) с "JPEG error #42". С другими ошибками не наблюдаеться.
Експеремент:
Открываю блокнот и сохраняю текстовой файл с расширением .jpg (пусть будет 000.jpg)

Вот такой вариант кода работает если ошибка "JPEG error #53"
var
JPG:TJpegImage;
begin
JPG:= TJpegImage.Create;
 try
  JPG.LoadFromFile('C:\Sony\000.jpg'); но возникает Exception здесь, при загрузке, а при ошибке #42 - в следующей строчке
  Image1.Picture.Assign(JPG);
  except
   on E:Exception do begin
    JPG.LoadFromFile('D:\Pictures\Films\ph-10167.jpg');
    Image1.Picture.Assign(JPG);
    end;
   end;
  JPG.Free;
end;

Так как же отловить это?
Могу скинуть ту попорченую картинку с примером, если поможет.


DVM   (2011-07-12 21:01:00) [24]


> Вот с иконками Exception  выплывает сразу после неудачной
> загрузки а с .jpg только когда Assign.

декодирование происходит в этот момент вероятно, а до этого момента JPEG данные просто лежат в Stream


SIV5000   (2011-07-12 20:48:00) [25]


> в данном случае не видно, чтобы какие-то особые

Ну это так, упрощенный вариант, самая "Суть"


> Юрий Зотов

Нифига. JPG то освобождаеться, но выдает окно с "JPEG error #42". Окно то и должно по идее в "except  on E: Exception" не появляться (что мне и надо).
Просто уже есть похожий код для обаботки иконки но там Exception  перехватываеться и все ОК. А с .jpg какая то фигня. Вот с иконками Exception  выплывает сразу после неудачной загрузки а с .jpg только когда Assign.
Может виноват TImage, но тут он просто для примера а на самом деле использую TBitmap.Assign(TJpegImage). Итам тот же результат !!!
Так как же ето сделать???


Юрий Зотов   (2011-07-12 16:41:00) [26]


JPG:= TJpegImage.Create;
try
 JPG.LoadFromFile('C:\Sony\DSC05107.jpg');
 Image1.Picture.Assign(JPG);  
finally
 JPG.free;
end;


MBo   (2011-07-12 16:40:00) [27]

в данном случае не видно, чтобы какие-то особые действия при исключения делались, так что try-finally будет разумно использовать.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо