Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Закончить выполнение одной процедуры из другой


Автор: pavelv 28.11.2007, 09:34
Пример:

Код

procedure temp1;
begin
 temp2;
end;

function temp2:boolean;
begin
 temp2:= true;
 try
  //какой-то код
 except
   temp2:= false;
  //ВОТ ТУТ же закончить выполнение temp1, тоесть сделать аналогично тому, что в ней exit написать
 end;
end;


Хотелось бы узнать возможно ли вообще такое? Понимаю, что проще написать пару условий в temp2, но на данный момент таких процедур в программе 72 штуки и легче одну функцию исправить smile.

Автор: Alexeis 28.11.2007, 10:37
Цитата(pavelv @  28.11.2007,  09:34 Найти цитируемый пост)
Понимаю, что проще написать пару условий в temp2

  Лучше сделать пару вложенных  try блоков если возникло исключие в внешнем блоке, то except разместить в самом конце процедуры, после возникновения исключения просто не будет других операторов на выполнение и выход из процедуры произойдет сам собой.

Автор: pavelv 28.11.2007, 10:42
Alexeis в этом случае прийдется лапатить все 72 отчета. Конечно можно и Stringreplace воспользоваться, но уже просто интересно где читать сабж и возможен ли он вообще

Автор: Snowy 28.11.2007, 12:56
Код
procedure temp1;
begin
 temp2;
 ShowMessage('Эта строка не выполнится при ехепшене');
end;

function temp2:boolean;
begin
 temp2:= true;
 try
  //какой-то код
 except
   temp2:= false;
   Abort; //ВОТ ТУТ делаем аборт вызывающей функции
 end;
end;

Автор: pavelv 29.11.2007, 12:11
Спасибо, решил проблему smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)