Паскаль. Переменные и массивы внутри классов?
Что творится? Не компилируется?
А не компилируется из-за непонимания концепции эквивалентности типов. В отличие от Си, внешне одинаковые типы не эквивалентны! Для эквивалентности надо, чтобы их цепочки type A = B; вели к одному «предку». Для этого существует оператор type.const
  FieldSize = 10;
  MaxShips = 10;
type
  TField = record
    cells : array [1..FieldSize, 1..FieldSize] of integer;
    nLive : array [1..MaxShips] of integer;
  end;
  TGame = class
    Field : TField;
    constructor Create(const Field : TField);  
  end;
Возможно, эквивалентность ослабили в Delphi, не проверял. А в BP именно так.
Возможно, вы также сделали известную ошибку начинающего дельфиста:var
  x : Test;
....
x.Create(a, b);     // неверно!
x := Test.Create(a, b); // верно!Есть одно исключение из этой эквивалентности типов.type
  DaInt = array of integer;

procedure DoSomething1(var x : array of integer);
procedure DoSomething2(var x : DaInt);
Эти команды обе действуют, но не эквивалентны!
Первое — нововведение TP7, параметр типа «открытый массив», массив любой размерности. Статический, динамический, строчка 2D-массива — всё подойдёт. Действуют Low, High и (для D4+) Length.
Второе — нововведение D4, динамический массив, которому можно изменять длину через SetLength.
Если речь о PascalABC, то смотрите в документацию, он немножко особенный.
Если PascalABC.NET, то и подавно, это извращенные решетки.