Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2021, 20:02   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию Почему не срабатывает обработка ошибки?

Код:
   try
    Img[j].Picture.LoadFromFile(memo2.Lines[j-1]);
   Except
    Img[j].Visible:=false;
   End;
Img - массив TImage

При таком коде не срабатывает обработка ошибки и при битом файле все равно программа останавливается, не выполняя действий дальше

В чем проблема?
Kronos913 вне форума Ответить с цитированием
Старый 03.07.2021, 20:10   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Что значит
Цитата:
Сообщение от Kronos913 Посмотреть сообщение
программа останавливается
northener вне форума Ответить с цитированием
Старый 03.07.2021, 20:51   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию

Это находится внутри цикла. И дальше действия цикла не выполняются
Kronos913 вне форума Ответить с цитированием
Старый 03.07.2021, 20:54   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Под отладчиком работаете?
northener вне форума Ответить с цитированием
Старый 03.07.2021, 21:21   #5
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
LoadFromFile
Так там просто бинарь в память вычитывается. А вот декодирование уже происходит при отрисовке. Поэтому тут ошибка не ловится.
Ну на самом деле так не должно происходить и проверка должна идти при загрузке.
Но данный архитектурный баг в дельфи есть и его надо принять как давность.

Как временное решение. Просто после загрузке отрисуйте картинку на канве и там уже после ошибки разрушайте изображение. Вообще Delphi не рассчитан на работу с битые картинками - сильно текут указатели во внутренних дебрях кода. Самое верное при передачи проверяйте контрольные суммы прежде чем загружать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 04.07.2021, 03:05   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Так там просто бинарь в память вычитывается. А вот декодирование уже происходит при отрисовке.
Надо же! Век живи, век учись.
А не прокатит ли тогда такой код:
Код:
Img[j].Visible:=False;
   try
    Img[j].Picture.LoadFromFile(memo2.Lines[j-1]);
    Img[j].Visible:=True;
   Except
   End;
Не обращайте внимание на пустой except в моём варианте. У ТС он тоже практически пустой.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Почему условие не срабатывает? Max$$ Помощь студентам 12 26.09.2017 20:10
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko JavaScript, Ajax 1 03.08.2017 11:48
Что-то не срабатывает в коде: Почему не происходит пропорциональное масштабирование DIV'а ne4Euusmvyo HTML и CSS 2 15.02.2017 20:37
Почему на ряду со всеми, не срабатывает hot key "F12" KBO Помощь студентам 12 29.10.2015 23:21
Почему не срабатывает preg_replace? Karyuudo Помощь студентам 3 20.09.2015 01:16