
06.02.2017, 20:10
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
А что сделать-то надо?
ну есть матрица переходов.Видимо, выполняется запрос и по его результату делается переход.
Типа:
Код:
var
Matrix : Array [1..4,1..4] Of String; // сама матрица [строка, столбец]
// функция перехода
// Условие выхода - возврат нуля (специально делать ничего не надо, все в матрице)
function DoStep(APos : Integer) : Integer;
var
gTrue, gFalse : Integer;
qQuery : String;
qValue : Integer;
begin
// Проверяем, что не вышли за пределы матрицы
If (APos < Low(Matrix)) Or (APos > High(Matrix)) Then
Raise Exception.CreateFmt('Index out of matrix (%d)',[APos]);
// Получаем данные из строки
gTrue := StrToInt(Matrix[APos,2]);
gFalse := StrToInt(Matrix[APos,3]);
gQuery := Matrix[APos,4];
// Выполняем запрос. не знаю как у тебя реализованно.
// Функция должна вернуть Integer, на вход принимает запрос из матрицы
qValue := ExecQuery(qQuery);
// Принимаем решение и возвращаем соотв. результат
If qValue > 0
Then Result := gTrue
Else Result := gFalse;
end;
// А это, собстаенно, проход по матрице.
procedure Navigate;
var
CurrentPosition : Integer; // текущая позиция в матрице
begin
CurrentPosition := 1;
While CurrentPosition > 0 Do
Begin
CurrentPosition := DoStep(CurrentPosition);
End;
end;
|