Tak už to funguje dle předpokladu, ale pořád tomu nerozumím.
Trochu jsem upravil definici TRun
TRun = Class(TThread)
protected
pPrikazy : TCommandRoutine;
public
cPrikazy : TAPrikazy;
Procedure Napln;
Procedure Execute;override;
End;
procedure TRun.Napln;
Var
p : PCommandList;
begin
SetLength(cPrikazy,2);
cPrikazy[0]:=$81;
cPrikazy[1]:=$0;
p:=@cPrikazy;
pPrikazy:=TSeznamPrikazu.Create(p); //Teď už p ve watch ukazuje adresu pole a při rozbalení jeho obsah. Problémová rutina už funguje normálně.
end;
Myslíte, že jsem měl někde chybu?
Jediné, co mne napadá je, že Array of Byte je něco jiného než Array[0..1] Of Byte, ale předpokládal jsem že to můžu v klidu přetypovat (myslím, že dříve jsem to takto běžně dělal).
Aha, tak už asi vím. @cPrikazy ukazuje na ukazatel, kde je uloženo @cPrikazy[0]
Kdežto když mám P:Array[0..1] Of byte, tak @P=@P[0]. To bude to jádro pudla...