我正在尝试使用恒定的动态array of TClass
,但是存储的值无效。当我使用常量静态array[0..xx] of TClass
时,这是正确的。
这是示例代码:
const
_CtrlClasses : array[0..2] of TClass
= (TPresentedTextControl,TTextControl,TCustomEdit);
_CtrlClassesDyn : array of TClass
= [TPresentedTextControl,TTextControl,TCustomEdit];
// _CtrlClasses : array[0..2] of integer
// = (1,2,3);
// _CtrlClassesDyn : array of integer
// = [1,2,3];
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
with Memo1.Lines do
begin
Add('Static :');
for i:=Low(_CtrlClasses) to High(_CtrlClasses) do Add(format('%x',[integer(_CtrlClasses[i])]));
Add('Dynamic :');
for i:=Low(_CtrlClassesDyn) to High(_CtrlClassesDyn) do Add(format('%x',[integer(_CtrlClassesDyn[i])]));
end;
end;
存储在Memo1中的结果如下:
Static :
79FA84
6F9C88
7F7EFC
Dynamic :
79FADC
6F9CE0
7F7F54
正确的值是“ Static:”下面的值。对于动态数组,将恒定偏移量($ 58)添加到存储的值中。 你能帮我吗?