Проблема с постоянным динамическим массивом классов - PullRequest
2 голосов
/ 26 сентября 2019

Я пытаюсь использовать постоянную динамическую 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).Не могли бы вы помочь мне?

...