powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка кода на успешное выполнение до этого
7 сообщений из 7, страница 1 из 1
Проверка кода на успешное выполнение до этого
    #39776623
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, задача такая если в "часть1" возникает ошибка сохранения, то "часть2" не должна выполнятся, я решил что это можно сделать так: при ошибке сохранения присваиваем переменной res := -1, а в "части2" проверяем чему равна эта переменная. Вопрос, правильна ли такая реализация будет? "Строка 1", "Строка 2" "Строка 3", во всех ли строках нужно переменной res присваивать значение, или можно в одной какой то строке присвоить значение?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
//////////// часть1
if ... then begin
  try
    if ... then begin
	  if ... then begin
	    if ... then begin
          TransMgr[FQI.DataBase].Commit;
          self.Close;
		end else begin
		  res := -1; //строка 1
          TransMgr[FQI.DataBase].RollBack;
          ShowError('Ошибка сохранения'); 
		end;
	  end else begin
        TransMgr[FQI.DataBase].Commit;
        self.Close;
      end;
    end else begin
	  res := -1; //строка 2
      TransMgr[FQI.DataBase].RollBack;
      ShowError('Ошибка сохранения');  
    end;
  except
    on E:Exception do begin
	  res := -1; //строка 3
      TransMgr[FQI.DataBase].RollBack;
      ShowError('Ошибка сохранения'+E.Message); 
    end;
  end;
end;
////////////// часть 2
if res <> -1 then begin
...
TransMgr[FQI.DataBase].Commit;
else 
exit;
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776629
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpionзадача такая если в "часть1" возникает ошибка сохранения, то "часть2" не должна выполнятся
Код: pascal
1.
2.
3.
4.
5.
try
  Задача1;
  Задача2;
except
end;


Задача2 не выполнится, если при выполнении Задача1 произойдет ошибка.
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776631
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

просто проверить if Transaction.Active then Transaction.Commit?
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776645
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,
спасибо такой вариант работает
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776647
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon,

можете объяснить как работает этот код в текущей реализации?
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776731
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

у тебя есть некая транзакция которая либо активная либо нет. безотносительно конкретной компоненты. если транзакцию откатили или не начали, значит она не активная и подтверждать соответственно нечего. если активная - значит подтверждаем. без всяких флагов.
...
Рейтинг: 0 / 0
Проверка кода на успешное выполнение до этого
    #39776852
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Transaction.StartTransaction;
try
  if not Condition1 then
    raise Exception.Create('Condition1 failed');
  if not Condition2 then
    raise Exception.Create('Condition2 failed');
  Save;
  Transaction.Commit;
  Close;
except
  on E: Exception do begin
    Transaction.Rollback;
    ShowError('Ошибка сохранения: ' + E.Message); 
  end;
end;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка кода на успешное выполнение до этого
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]