Delphi 需要常量表达式

Delphi Constant Expression Expected

我收到以下代码的 "Constant expression expected" 错误:

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;

有人知道这是怎么回事吗?
提前致谢!

您只是缺少 case 语句中的 begin 和 end,因此请将您的函数更改为

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;