Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 00:28   #1
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию Адрес объекта в памяти

Необходимо узнать адрес объекта в памяти при нажатии на него. При этом объект создаётся динамически и хранится в Tobjectlist.
То есть кликаем по объекту а у нас куда нибудь например в лейбл выводится адрес объекта в памяти.
Artempokrowski вне форума Ответить с цитированием
Старый 09.04.2012, 03:00   #2
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

разобрался сам. Есть self у каждого объекта. Поэтому переопределяем родительский метод клика мышкой по объекту и выводи куда надо...
Artempokrowski вне форума Ответить с цитированием
Старый 09.04.2012, 08:50   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Self применяется только внутри методов, и означает объект с которым этот метод вызван.
в вашем же случае надо помнить, что всегда объекты(ключевое слово class) хранятся по указателю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.04.2012, 13:33   #4
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
Вопрос

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Self применяется только внутри методов, и означает объект с которым этот метод вызван.
в вашем же случае надо помнить, что всегда объекты(ключевое слово class) хранятся по указателю.
Ок тогда как узнать для каждого объекта именно этот указатель.
Artempokrowski вне форума Ответить с цитированием
Старый 09.04.2012, 13:57   #5
RinatV
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 27
По умолчанию

Можно при создании объекта прописать ему уникальное имя Name и по нему уже определять как реагировать, конечно если объект наследник класса TComponent, если нужен только тип объекта то есть у наследников TObject имеется свойство ClassName. Также можно хранить ссылки в дополнительных списках TObjectList созданный без автоуничтожения содержащихся объектов т.е. TobjectList.Create(false). При наступлении события искать объект там и реагировать соответсвенно.
RinatV вне форума Ответить с цитированием
Старый 09.04.2012, 14:05   #6
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

по моему проще всё таки будет через Self. К тому же щелкать нужно будет по объекту а он как раз у будет в дальнейшем указывать свой адрес.
Artempokrowski вне форума Ответить с цитированием
Старый 09.04.2012, 14:17   #7
RinatV
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 27
По умолчанию

Заранее не узнаешь какое значение будет у self, для этого и приходится думать о его идентификации, конечно если это нужно.
RinatV вне форума Ответить с цитированием
Старый 09.04.2012, 14:36   #8
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

Конечно не узнать, но мы же будем его вызывать уже из созданного объекта.
Artempokrowski вне форума Ответить с цитированием
Старый 09.04.2012, 18:25   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

кого его?
раскрывайте карты.

ибо у метода селф это одно, а вот в ссылках на процедуру-метод другое.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.04.2012, 19:00   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Чем не нравится такой способ
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Label2.Caption:=IntToStr(DWORD(Sender));
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если через стек передается адрес памяти. зачем нужны указатели * sexsex Общие вопросы C/C++ 6 25.02.2012 17:17
Адрес Bios в оперативной памяти finny Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.09.2010 13:00
Как изменять свойства и функцыи объекта в памяти? VintProg Общие вопросы Delphi 2 10.07.2009 15:29
Вызвать адрес памяти как функцию XAOC-forever Общие вопросы Delphi 18 07.03.2009 20:32
Как получить адрес свойства объекта? Lim Общие вопросы Delphi 3 30.11.2007 19:46