J'ai ce qui semble être une question assez simple, mais je voulais juste m'assurer.Pointer vs TType
Y a-t-il une différence entre les deux?
var ClassArray: array of TMyClass;
constructor TMyClass.Create;
begin
SetLength(ClassArray, Length(ClassArray)+1);
ClassArray[Length(ClassArray)-1]:=Self;
end;
begin
for i:=0 to x do
ClassArray[i].MyProcedure;
et
var PointerArray: array of Pointer;
constructor TMyClass.Create;
begin
SetLength(PointerArray, Length(PointerArray)+1);
PointerArray[Length(PointerArray)-1]:=Self;
end;
begin
for i:=0 to x do
TMyClass(PointerArray[i]).MyProcedure;
En raison de la façon dont il travaille quand je joue avec elle, la seule différence est que je ne peux pas voir directement les éléments dans PointerArray (comme seule l'adresse est indiquée).
Merci
Sans rapport avec votre question - Vous devez utiliser 'High()' au lieu de 'Length()' dans 'TMyClass.Create()'. Vous essayez de stocker votre pointeur 'Self' sur le mauvais index de tableau. –
@ RemyLebeau-TeamB ouais, j'utilise habituellement 'PointerArray [Length (PointerArray) -1]: = Self;'. En passant, est-ce différent de la «haute()» en termes de vitesse? –