私はかなり基本的な質問であると思うが、私はちょうど確かめたい。ポインタ対TType
これらの2つの違いはありますか?
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;
と
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;
ので、私はそれで遊んでたときに、それが働いている途中から、唯一の違いは、私が直接(アドレスのみが示されているよう)PointerArray内の要素を表示することができないということです。
おかげ
あなたの質問に無関係 - あなたは 'TMyClass.Create()'の中で 'Length()'の代わりに 'High()'を使う必要があります。 'Self'ポインタを間違った配列インデックスに格納しようとしています。 –
@ RemyLebeau-TeamBええ、私は通常、 'PointerArray [Length(PointerArray)-1]:= Self;'を使います。ちなみに、これはスピードという点で、 'High()'とは違いますか? –