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;
我收到以下代码的 "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;