Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача через PostMessage указателя на класс 
:(
    Опции темы
DarkProg
Дата 4.4.2012, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



У меня есть такая ситуация.

Есть универсальный обработчик, в котором есть Sender:TObject

В обрабочике необходимо выполнить PostMessage(FormHandle, WM_My_Message, Integer(Pointer(Sender)), 0)

Я пытался передавать Handle компонента, но как бы потом используя FindControl я ничего не получу, т.к. работает это только для форм... указатель передать через выше приведенную конструкцию не получается... У меня в половине случаев указатель получается верный, во второй неверный... Как быть?


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MetalFan
Дата 4.4.2012, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(DarkProg @  4.4.2012,  16:06 Найти цитируемый пост)
во второй неверный

что передаешь, то и получаешь. Что значит "неверный" указатель? аллаху не поклоняется или свинину ест?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Snowy
Дата 4.4.2012, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Указатель правильный на момент отправки сообщения.
Но на момент получения нет гарантий, что по этим адресам что-то есть.
Например, если в обработчик была отдана копия объекта...
PM MAIL   Вверх
DarkProg
Дата 4.4.2012, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(Snowy @  4.4.2012,  19:46 Найти цитируемый пост)
Указатель правильный на момент отправки сообщения.

Ну как бы Sender точно существует.

Цитата(Snowy @  4.4.2012,  19:46 Найти цитируемый пост)
Но на момент получения нет гарантий, что по этим адресам что-то есть.
Например, если в обработчик была отдана копия объекта... 

Мнда.... и как же сие избежать... Кстати и почему может быть передана копия объекта, ведь если сделать
Код

 (Sender as TControl).Name:='SomeName'
, то имя компонента изменится?


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
kami
Дата 4.4.2012, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



DarkProg, а обратное приведение как выглядит?
Хотя... о чем это я, оно же не меняется время от времени, если "частично работает" - должно быть правильно.

Snowy, тоже интересно - как это, "копия объекта"? Всё время считал, что передается только указатель, который копируй/не копируй, а всё равно будет смотреть на тот же участок памяти. Объясните, пожалуйста.

Это сообщение отредактировал(а) kami - 4.4.2012, 22:25
PM MAIL WWW   Вверх
DarkProg
Дата 5.4.2012, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



А очень просто перевожу, делаю вот так
Код

Pointer(mess.WParam)




--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Чучмек
Дата 5.4.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



DarkProg, А можешь смоделировать простейший пример, где не работает? Интересно поковырять.  


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
DarkProg
Дата 5.4.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Чисто уже из спортивного интереса чуть позже попробую сделать простой пример, но не уверен что сработает в простом примере....

P.S. спортивного, потому что уже решил проблему по другому. Я передаю ComponentIndex - работает.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MetalFan
Дата 6.4.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(DarkProg @  5.4.2012,  18:30 Найти цитируемый пост)
не уверен что сработает в простом примере

Просто проблема у тебя в некорректном коде, а не в простоте или сложности примера.
Передал указатель, который по получению оказывается уже невалидным.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
DarkProg
Дата 6.4.2012, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(MetalFan @  6.4.2012,  17:45 Найти цитируемый пост)
Передал указатель, который по получению оказывается уже невалидным.

Почему?


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
bems
Дата 7.4.2012, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



В половине случаев это часом не в сборке под х64? Тога дело в том что вместо интегер нужно NativeInt


--------------------
Обижено школьников: 8
PM MAIL   Вверх
DarkProg
Дата 8.4.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(bems @  7.4.2012,  18:39 Найти цитируемый пост)
В половине случаев это часом не в сборке под х64? Тога дело в том что вместо интегер нужно NativeInt 

Не только 32-х битный вариант пока делается. Пока на XE2 не перешли до сих пор...


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1679 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.