Показать сообщение отдельно
  #7  
Старый 11.11.2012, 19:07
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от ART
Так есть ли возможность мне в destroy узнать именно @Obj ?
Образно говоря, вызов деструктора выглядит так:
Код:
var object: pointer;
...
Destroy(object);
; -------------------
mov ecx, [object]   
push ecx                ; пусть будет stdcall, в данном случае не важно
call Destroy
При этом конструкция @Obj выглядит как
Код:
mov ecx, obj
То есть в деструктор мы передаем значение, выдранное из памяти, а @Obj - это просто адрес.
Аналогия: в первом случае мы взяли книгу с полки и отнесли ее другу. Он никак не сможет узнать, где эта книга стояла ранее (без посторонней помощи).
Во втором случае мы сказали другу: "книга на такой-то полке, возьми сам".
В деструктор передается первым способом.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием