Показать сообщение отдельно
  #2  
Старый 11.11.2012, 16:57
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от 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 во втором - конечно же ты будешь получать разные значения - это же разные переменные и находятся они в разных местах.
Ответить с цитированием