![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
jpeg
mahab © (2006-10-23 19:36:00)Здравствуйте! У меня есть испорченный JPEG. Хотелось бы адекватно обработать исключительную ситуацию "Jpeg error #42" на загрузку в компонент Timage.Блок Try ... Except..end не помогает.
ASoft (2006-10-24 11:31:00) [1]
> но -- сделано как сделано.
где? в jpeg.pas?
Ketmar (2006-10-24 10:44:00) [2]>[23] Gydvin(c) 24-Oct-2006, 10:34
да понятно, что кучу ошибок можно было отловить в процессе открытия. но -- сделано как сделано.
Gydvin (2006-10-24 10:34:00) [3]
> там всего пара байтиков в конце сломана?
Будет неверно отображаться. :))) Просто сравнивать реально существующий размер данных с заявленным. Имхо это должно отсеч часть ошибок
Ketmar (2006-10-24 10:25:00) [4]>[21] Gydvin(c) 24-Oct-2006, 10:23
>Аха, как будто не судьба, сразу проверить открываемый файл,
>на соответствие формата и целостность
в общем случае его для этого всё равно надо декодировать. а вдруг там всего пара байтиков в конце сломана?
Gydvin (2006-10-24 10:23:00) [5]
> Ketmar © (24.10.06 09:43) [20]
Аха, как будто не судьба, сразу проверить открываемый файл, на соответствие формата и целостность
Ketmar (2006-10-24 09:43:00) [6]>[19] Gydvin(c) 24-Oct-2006, 09:11
>Странный баг.
это не "странный". это достаточно логично: зачем преобразовывать jpg, пока его не надо выводить? как понадобилось -- тут и преобразовали. и с размаху сели на грабли. %-)
Gydvin (2006-10-24 09:11:00) [7]Странный баг.
Автор пробуйте так
var
jpg: tjpegimage;
begin
jpg := tjpegimage.Create;
try
jpg.LoadFromFile('my jpeg');
image1.Picture.Bitmap.Assign(jpg);
except
showmessage('Error');
jpg.Free;
exit;
end;
...
jpg.Free;
Ketmar (2006-10-24 07:26:00) [8]да хоть 666. ноги у них всех из одного места растут. %-)
ASoft (2006-10-24 07:11:00) [9]
> Текстовым файлом с расширением измененным на .Jpg я предложил
> иммитировать испорченный файл который есть у меня - эффект
> оди и тот же.
c разницей: если файл пуст - ошибка #42 (типа, неожиданный конец файла), если текст - #53 (может, наверное и #52)
Ketmar (2006-10-23 20:31:00) [10]>[14] Anatoly Podgoretsky(c) 23-Oct-2006, 20:28
но факт в том, что говорит именно JPEG error. и в совершенно нелогичном месте. честно признаться -- сам не знал о таком поведении.
mahab (2006-10-23 20:31:00) [11]Текстовым файлом с расширением измененным на .Jpg я предложил иммитировать испорченный файл который есть у меня - эффект оди и тот же.
Anatoly Podgoretsky (2006-10-23 20:28:00) [12]Нулевой файл = пустой Picture
Нулевой файл легко отлавливается. Наверно не надо рассказывать как?
Ketmar (2006-10-23 20:21:00) [13]>[12] Dmitrij_K 23-Oct-2006, 20:18
а у меня -- как автор описал. %-)
Dmitrij_K (2006-10-23 20:18:00) [14][3] при попытки загрузить пустой jpg файл работает как положено
Delphi7
мдя...
Ketmar (2006-10-23 20:15:00) [15]>[8] mahab(c) 23-Oct-2006, 20:13
>Да, но мне не надо преобразовывать
а придётся. %-)
mahab (2006-10-23 20:15:00) [16]> чтобы выполнялся код между Except и End
а этого не происходит
Ketmar (2006-10-23 20:14:00) [17]>[7] Dmitrij_K 23-Oct-2006, 20:08
>Файл испорчен или недоступен
D7. исключение не вываливается, если a.jpg нулевого размера. вываливается исключение при попытке TImage отрисоваться. так что автор прав. см. [6].
mahab (2006-10-23 20:13:00) [18]>Ketmar © (23.10.06 20:02) [6]
>преобразовывать jpeg в битмап самому.
Да, но мне не надо преобразовывать , мне нужно только обьявить о том, файл - плохой, а для этого мне необходимо, чтобы выполнялся код между Except и End.
Dmitrij_K (2006-10-23 20:08:00) [19]
> Кстати попробуйте создать пустой текстовый файл измените
> расширение м загрузить в Timage с таким кодом.
Файл испорчен или недоступен
???
Ketmar (2006-10-23 20:02:00) [20]>[5] Dmitrij_K 23-Oct-2006, 19:50
>помогает
хм. вынужден извиниться перед автором вопроса. действительно, не помогает. исключение возникает не при загрузке jpg, а при попытке преобразования его. каковая попытка предпринимается, когда надо отобразить TImage. решать можно разными путями. простейший -- преобразовывать jpeg в битмап самому.