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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2007, 00:21   #1
chekanoff
Пользователь
 
Аватар для chekanoff
 
Регистрация: 13.11.2007
Сообщений: 81
По умолчанию Перхват сообщения об ошибке!!!!

Доброго времени дня!!!
Подскажите как перехватить сообщене о том что файл не найден при отображении фоток!!!
Спасибо за помощь))))))
Лучшее образование - самообразование (В.Пикуль)
chekanoff вне форума Ответить с цитированием
Старый 08.12.2007, 01:05   #2
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

а ты предварительно проверяй наличие файла функцией fileexists('путь к файлу') если он есть то true еcли нет то false
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 09.12.2007, 13:55   #3
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

try ... except
Баламут вне форума Ответить с цитированием
Старый 09.12.2007, 14:10   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Обработка исключений в Delphi

Цитата:
В Delphi техника SEН реализуется с помощью блока try…except/finally…end. Общий формат этих блоков такой:
try
<код>
except
<что будет выполнено если будет исключение>
end
либо:
try
<код>
finally
<что будет выполнено в любом случае>
end
В втором случае видно что в цепочку обработчиков SEH будет добавлен пустой обработчик, а в первом случае в цепочку обработчиков будет добавлен указатель на блок except…end. В блоке, который следует после except можно обработать исключение, можно просто вывести сообщение об ошибке, а можно и ничего не делать. При возникновении ошибки в основном блоке управление сразу же передаётся коду, который находится в блоке except. Код, который находится после строки, которая вызвала исключение не выполнится. Если основной код слишком большой, и могут возникать различные ошибки, то можно с помощью блока on…do узнать какое именно исключение произошло.
Код:
Например:
   try
       d:=56/0;
       x:=round(d);
   except
       on EInvalidOp do
           ShowMessage(’деление на ноль’)
       else
           ShowMessage(’другая ошибка’);
   end;
Можно получить детальную информацию об исключении, объявив в блоке on…do переменную требуемого класса и потом её использовать, например:
   try
       d:=56/0;
       x:=round(d);
   except
       on Excp : EInvalidOp do
           ShowMessage(’ошибка под названием - ‘+Excp.Message)
       else
           ShowMessage(’Другая ошибка’);
   end;
Можно сгенерировать исключение с помощью оператора raise, например:
   type
       MyClass = class (Exception);
………
   begin
//more code
      raise MyClass.Create(’любой текст’);
или можно воспользоваться уже существующим классом, например
   raise EZeroDivide.Create(’текст’);
Информацию о классах исключений можно получить, набрав в справке Delphi «VCL exception classes» (там конечно не все, но для начала хватит).
Следует подметить, что ошибки можно обработать только в стандартных функциях Delphi, ошибки в API функциях нельзя отловить с помощью блоков try. У API функций есть свой способ узнать об ошибке или генерировать ошибки – это API функции Set/GetLastError.
Alar вне форума Ответить с цитированием
Старый 10.12.2007, 10:14   #5
VVk
Пользователь
 
Регистрация: 26.10.2007
Сообщений: 27
Хорошо попробуй на I/O

попробуй на EInOutError
стандартный премер обработки:

Код:
on IO: EInOutError do
	begin	
		Case IO.errorcode of
			2: s:='Файл ''' +s+''' не найден;
			3: s:=ошибочне ымя файла''' +s+''''; 
			4: s:=слишком много открытых файлов; 
			5: s:= 'Файл ''' +s+''' не доступен'; 
			100: s:= 'Достигнут конец фада ''' +s+''''; 
			101: s:= 'Диск переповнений ''' +s+''''; 
			106: s:= 'ошибка ввода... ''' +s+'''';
		end;
		MessageDlg(s, mtWarning, [mbOk], 0);
	end;
или другие коды ошибок...
VVk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдать сообщение об ошибке Detka Общие вопросы Delphi 17 10.07.2008 15:06
Как убрать сообщение об ошибке? AngelOfDeath Работа с сетью в Delphi 2 01.05.2008 11:44
Borland C, перхват нажатий стрелок Arion Помощь студентам 3 30.04.2008 12:33
Звук об ошибке как вырубить) Kukkk Общие вопросы Delphi 3 17.02.2008 21:41