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

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

Обработка исключительных ;ситуаций [D5, Win95/98]


Страницы:   1 2

Abajun ©   (2002-01-28 13:39:00) 

Привет всем! В программе иногда возникает такая ситуация: вызывается функция из DLL и в ней программа прекращает работу, т.е. вылетает безо всяких ошибок. А мне нужно, чтобы если она вылетает и функция до конца не отработает, то все равно дальше продолжать работу программы. Не подскажите, как правильнее всего это сделать?


Abajun   (2002-01-28 15:19:00) [21]

Исходники есть, но на Fortran (присоединяется через LoadLibrary).
Можно считать, что DLL закрыта.


Digitman   (2002-01-28 15:04:00) [22]

DLL "чужая" (без исх.текстов) или твоей разработки ?


Abajun   (2002-01-28 14:48:00) [23]

А я не знаю - она просто вылетает и все. Кроме того, она вызывается и начинает считать, но в процессе выполнения что-то там не срабатывает (какие-то математические ошибки) и все.


Digitman   (2002-01-28 14:33:00) [24]

какое исключение возникает при выполнении вызова DLL-ф-ции ?


MBo   (2002-01-28 14:31:00) [25]


ошибся

try
Flag:=True;
Lvpp:= SomeFunction(a1,...);
flag:=False;
finally
if Flag then
Lvpp:= 100000;
end;


Abajun   (2002-01-28 14:29:00) [26]

В строчке
Lvpp:= SomeFunction(a1,...)
программа заканчивает работу и ни на какой
flag:=False;
не пойдет.


MBo   (2002-01-28 14:18:00) [27]

если не разбираться в причинах, то можно по-тупому


try
Flag:=True;
Lvpp:= SomeFunction(a1,...);
flag:=False;
except
if Flag then
Lvpp:= 100000;
end;


Abajun   (2002-01-28 14:04:00) [28]

Мне finally не подходит, т.к. этот блок выполняется обязательно, независимо от того, произошла ли ошибка или нет. А мне нужно в переменную Lvpp передать значение SomeFunction, а если в той какая-либо ошибка (не считает, например) - то присвоить значение 100000. Если функция вылетает - для меня это тоже результат.


Андрей Сенченко   (2002-01-28 14:00:00) [29]

Попробуй все-таки Finally. Лично я except-ом стараюсь не пользоваться. То ли он не понимает, что произошла исключительная ситуация, то ли я чего не то пишу, но если написано в Finally- работает, а если в Except - никак.


Abajun   (2002-01-28 13:55:00) [30]

Так это все и написано:

try
Lvpp:= SomeFunction(a1,...);
except
Lvpp:= 100000;
end;

Иногда SomeFunction вылетает и программа дальше не идет, а хотелось, чтобы работал блок except. Как я понимаю, такой общий вид работает на все виды исключительных ситуаций. Так получается, что мой случай - это не такая ситуация?


Андрей Сенченко   (2002-01-28 13:43:00) [31]

try .. except
или
try .. finally

Судя по вопросу, скорее второе


Страницы:   1 2

Наверх

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