Ожидаемое выражение 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;
Другие вопросы по тегам