Показать сообщение отдельно
  #1  
Старый 16.11.2012, 11:04
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Остановка выполнения функции/процедуры из другой (дочерней) функции

Сей вопрос не особо важен и вызван чрезмерной ленью.

Суть:
Есть некоторая функция проверки условия. Вызывается из целого ряда других функций и процедур. Выдает сообщение об ошибке (если условие не выполнилось).

Вопрос:
Можно ли из этой функции проверки прервать выполнение той функции, из которой она была вызвана?

Мотивация:
На данный момент есть несколько функций проверки. Их результат критичен (то есть если результат отрицательный, дальше ничего выполняться не должно). В большинстве случаев они используются все, но местами требуется использовать их поодиночке. Выглядит это так:

Код:
function ФункцияПроверки1:boolean;
begin
******
end;

Function ФункцияПроверки2:boolean;
begin
******
end;

Function ФункцияПроверки3:boolean;
begin
******
end;

procedure ВыполняемаяПроцедура1;
begin
if ФункцияПроверки1 then
begin
***
if ФункцияПроверки2 then
begin
***
if ФункцияПроверки3 then
begin
*****
*****
*****
end;
end;
end;
end;

procedure ВыполняемаяПроцедура2;
begin
if ФункцияПроверки1 then
begin
***
if ФункцияПроверки2 then
begin
***
if ФункцияПроверки3 then
begin
*****
*****
*****
end;
end;
end;
end;
А хотелось бы упростить и привести к виду:

Код:
procedure ПроцедураПроверки1;
begin
if Условие=false then
begin
******
завершить подпрограмму, из которой была вызвана проверка;
end;
end;

procedure ПроцедураПроверки2;
begin
if Условие=false then
begin
******
завершить подпрограмму, из которой была вызвана проверка;
end;
end;

procedure ПроцедураПроверки3;
begin
if Условие=false then
begin
******
завершить подпрограмму, из которой была вызвана проверка;
end;
end;

procedure ВыполняемаяПроцедура1;
begin
ПроцедураПроверки1; //дальше не должно пойти, если условие не выполнено
***
ПроцедураПроверки2; //дальше не должно пойти, если условие не выполнено
***
ПроцедураПроверки3; //дальше не должно пойти, если условие не выполнено
***
***
***
end;

procedure ВыполняемаяПроцедура2;
begin
ПроцедураПроверки1; //дальше не должно пойти, если условие не выполнено
***
ПроцедураПроверки2; //дальше не должно пойти, если условие не выполнено
***
ПроцедураПроверки3; //дальше не должно пойти, если условие не выполнено
***
***
***
end;
Это возможно сделать?
Ответить с цитированием