Цитата:
Сообщение от ART
Код:
TMyClass = class
public
constructor Create;
destructor Destroy; override;
end;
destructor TMyClass.Destroy;
begin
Showmessage(Integer(@Self));
Inherited Destroy;
end;
Код:
var
Obj: TMyClass;
begin
Obj := TMyClass.Create;
Showmessage(Integer(@Obj));
Obj.Free;
end;
Получаю разные значения @Self и @Obj, а мне нужно, чтобы в методе Destroy узнать @Obj. Как это сделать? Почитал тут http://stackoverflow.com/questions/3...-pointer-usage , но ничего не понял.
|
Self - это и есть адрес объекта. Т.е. получать нужно так:
Код:
ShowMessage(IntToStr(Integer(Self))); // В первом случае
ShowMessage(IntToStr(Integer(Obj))); // Во втором случае
Ты же вместо этого пытаешься получить адрес "переменной" Self в первом случае и адрес переменной Obj во втором - конечно же ты будешь получать разные значения - это же разные переменные и находятся они в разных местах.