Сей вопрос не особо важен и вызван чрезмерной ленью.
Суть:
Есть некоторая функция проверки условия. Вызывается из целого ряда других функций и процедур. Выдает сообщение об ошибке (если условие не выполнилось).
Вопрос:
Можно ли из этой функции проверки прервать выполнение той функции, из которой она была вызвана?
Мотивация:
На данный момент есть несколько функций проверки. Их результат критичен (то есть если результат отрицательный, дальше ничего выполняться не должно). В большинстве случаев они используются все, но местами требуется использовать их поодиночке. Выглядит это так:
Код:
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;
Это возможно сделать?