2

I get a "Constant expression expected" error with the following code:

TBoard is defined as:

  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;

I get the error on the marked line:

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;

Does somebody know what is going on?
Thanks in advance!

Ricardo Boss
  • 101
  • 3
  • 12

1 Answers1

10

You are simply missing begin and end inside the case statement, so change your function to

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;

However, if this is your full code, you could simplify it very much, you don't need all these exits and also not the case-statement:

function TBoard.attack(const x, y: Integer): Integer;
begin
  Result := Self.check(x, y);
  if Result = 0 then
    Self.field[x, y] := 1;
end;
Sebastian Proske
  • 8,255
  • 2
  • 28
  • 37