Кто-нибудь знает хорошее решение или документацию по использованию условных блоков кода?

Например, если код выглядит как ...

DoSomethingImportant1, LoadData - это функции с логическими результатами.

var 
 lOk: Boolean;
begin
 lOk := False;

 lOk := DoSomethingImportant1;

 if lOk then
 begin
  LoadData; 
  lOk := SaveData;
 end;


 DoSomethingwithSavedData1...
 DoSomethingwithSavedData2...

 if lOk then
  lOk := DoSomethingImportant2
 else GiveSpecificErrorAndExit;* 

 etc...  

Я не хочу сохранять все условия, что процедура DoSomething повторялась 100 раз ..

Извините за мой англ.

-2
Steve88 2 Янв 2018 в 18:36

2 ответа

Лучший ответ

Сделать это можно так:

if not DoSomething then
  raise Exception.Create('Error ...');

DoSomething2;    
DoSomething3;

if not DoSomething4 then
  raise Exception.Create('Error ...');

if not DoSomething5 then
  raise Exception.Create('Error ...');

DoSomething6;
DoSomething7;
1
Andreas Rejbrand 2 Янв 2018 в 15:42

Что не так с

begin
  if not DoSomethingImportant1 then
  begin 
    GiveSpecificErrorAndExit;*  
  end; 

  if LoadData and Save then
  begin
    DoSomethingwithSavedData1...
    DoSomethingwithSavedData2...
  end

  else
  begin
    GiveSpecificErrorAndExit;* 
  end;

  if not DoSomethingImportant2 then
  begin 
    GiveSpecificErrorAndExit;*  
  end; 

 etc...  

Если это не тот ответ, который вы ищете, я удалю.

1
Dsm 2 Янв 2018 в 15:42