2

我收到以下代码的“预期常量表达式”错误:

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;

有人知道发生了什么吗?
提前致谢!

4

1 回答 1

10

您只是缺少 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;
于 2016-02-20T13:34:42.313 回答