Siema,
Podczas korzystania z wątków natrafiłem na pewien problem:

Utworzyłem klase dziedziczącą z TThread o nazwie TBase.
Zawiera ona konstruktor

  Create(const SuspOnStart: boolean;
                                  var Map: PTMatrix);
  

,gdzie PTMatrix jest typem wskaźnikowym wskazującym na niepustą macierz.
W ciele konstruktora zawarte są następujące intrukcje

    inherited create(SuspOnStar);
    PMap  :=  @Map
  

PMap pobiera adres Map bez problemów.

TPlay jest wątkiem dziedziczącym z TBase.
Definicja konstruktora wygląda następująco:

  constructor TPlay.Create(var PMap: PTMatrix;
                    const Cell: TCell;
                    const Pos:  TCurrentPos);  
  

(Zmienna PMap-j.w. , pozostałe zmienne są nieistotne)
, wraz z jego ciałem:

  inherited Create(false, PMap);
    SetBaseCell(Cell);
    SetPos(Pos, Pos);
  

wywołanie konstruktora następuje poprawnie.

Problem(EAccesViolation) pojawia się podczas korzystania z Macierzy.
Dla przykładu podaję fragment metody

SetPos(const Pos, OldPos:  TCurrentPos);
  PrevGround  :=  PMap^[OldPos.Col, OldPos.Row];
  

typ danych PrevGround oraz TMatrix[i,j]](od którego powstał typ PTMatrix)
jest całkowicie zgodny.

Zmienna przekazywana przez parametr jest zadeklarowana w module głownym
jest typu PTMatrix, jest utworzona funkcją New(); ilosc elementów jest zgodna
zarówno jak ich indeksy.

Przeniosłem zmienną

var PMap: PTMatrix;

do innej procedury(jako parametr) lecz efekt działania wątku był ten sam.
(zaznaczam, wróciłem do początkowych ustawień)