Использование Delphi Self-Pointer

Мне нужно получить указатель на мой экземпляр класса внутри этого экземпляра. Я не могу использовать "Self" напрямую, мне нужен указатель магазина для будущего использования. Я попробовал следующий код:

type
    TTest = class(TObject)
    public
        class function getClassPointer: Pointer;
        function getSelfPointer: Pointer;
    end;

class function TTest.getClassPointer: Pointer;
begin
    Result := Pointer(Self);
end;

function TTest.getSelfPointer: Pointer;
begin
    Result := Pointer(Self);
end;

И оба результата неверны - этот код:

test := TTest.Create;
Writeln('Actual object address: ', IntToHex(Integer(@test), 8));
Writeln('Class "Self" value: ', IntToHex(Integer(test.getClassPointer()), 8));
Writeln('Object "Self" value: ', IntToHex(Integer(test.getSelfPointer()), 8));

возвращает:

Actual object address:    00416E6C
Class "Self" value:       0040E55C
Object "Self" value:      01EE0D10

Пожалуйста, помогите мне понять, что это за ценность "Я"? Является ли «Self» указателем на этот экземпляр класса? Как использовать этот указатель для будущего использования вне этого объекта? Как получить правильный указатель из этого значения?

Ответы на вопрос(2)

Ваш ответ на вопрос