Использование 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» указателем на этот экземпляр класса? Как использовать этот указатель для будущего использования вне этого объекта? Как получить правильный указатель из этого значения?