Ожидаемое выражение Delphi
Я получаю сообщение об ошибке "Ожидается постоянное выражение" со следующим кодом:
TBoard
определяется как:
TBoard = class
field: array[1..5,1..5] of Integer;
function check(const x, y: Integer): Integer;
function addShip(x, y, size, dir: Integer): Integer;
function attack(const x, y: Integer): Integer;
end;
Я получаю сообщение об ошибке в отмеченной строке:
function TBoard.attack(const x, y: Integer): Integer;
begin
Result := Self.check(x, y);
case Result of
0:
Self.field[x, y] := 1;
Exit; // error: constant expression expected
else Exit;
end;
end;
Кто-нибудь знает, что происходит?
Заранее спасибо!
1 ответ
Решение
Вы просто пропускаете начало и конец внутри оператора case, поэтому измените свою функцию на
function TBoard.attack(const x, y: Integer): Integer;
begin
Result := Self.check(x, y);
case Result of
0:
begin
Self.field[x, y] := 1;
Exit;
end
else Exit;
end;
end;
Однако, если это ваш полный код, вы можете сильно упростить его, вам не нужны все эти выходы, а также оператор case:
function TBoard.attack(const x, y: Integer): Integer;
begin
Result := Self.check(x, y);
if Result = 0 then
Self.field[x, y] := 1;
end;