![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| gonzales |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
Братцы, поможите, кто сталкивался.
Создаю библу, в которой инициализирую объект TJvHidDeviceController.
подгружаю библиотеку, запускаю процедуру Init, но по неизвестной мне причине DeviceChange не срабатывает, я не получаю сообщения. При использовании этого же кода без библиотеки, все работает на ура. В чем причина, помогите!!!!!!!! листинг юнита без библы
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Передача объектов в Dll запрещена. Это приводит к неопределенным ситуациям. В чем причина, можно найти если захотеть, но лучше просто отказаться от такой передачи... Просто нельзя с все. Только COM или интерфейсы. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
так я ничего никуда не передаю. Объект создается в библиотеке и там же умирает... . Я такие штуки уже проделывал несколько раз, и все прекрасно работает. Все что я хочу, это грубо, чтобы объект передал из dll в основную программу через строковую переменную параметр.
Это сообщение отредактировал(а) gonzales - 7.4.2007, 13:05 --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Кто предок TJvHidDeviceController? Возможно, ему для работы нужен родитель. Это оконный компонент?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| gonzales |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
вот например аналогичный пример, в котором все работает
Добавлено через 2 минуты и 23 секунды
нет это не оконный компонент, да и свойства parent у него нет --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
||||
|
|||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Ничего не запрещено!!! Если всё грамотно сделать то всё будет работать!!! Добавлено через 5 минут и 18 секунд Как ты подгружаеш библиотеку? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Если сильно постараться и связать объект со всеми необходимыми ему глобальными объектами типа Application, менеджером динамической памяти, разрулить все особенности связанные с RTTI, то может оно и будет нормально работать, но все это недокументированные методы, которые нежелательно использовать из-за плохой переносимости. Потому не нужно учить плохому участников. Если где-то и работает, то это скорее исключение, чем правило. Читайте документацию от борланда. Покажите, где там написано, что можно передавать обычные объекты из Dll. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| gonzales |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
да где вы увидели перенос объекта из библиотеки. Более того, я таким образов даже с сишной библиотекой общался, в которой создан был экземпляр класса, а в основную програму на делфи передавались только результаты ее работы. См пример, с TSocet.
динамически. --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
||||
|
|||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Запости код подгрузки библиотеки, я думаю у тебя там ошибка
|
|||
|
||||
| cat512 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
во первых: в приведённом коде нет работы с глобальных объектов дельфы, а следовательно не надо ничего связывать и разруливать а тем более юзать RttI. Во вторых: как обращаются к объектам дельфы ? С помощью объектных ссылок( к классам с помщью классовых ссылок) Так вот обьектная ссыла - это указатель на блок памяти распределённой менеджером памяти под некоторый объект. Поэтому не вижу каких либо проблем с передачей объектной ссылки в Dll или наоборот. Это можно сделать например с помощью экспортируемой функции основного приложения, которая возвращает объектную ссылку. В Dll получаеш HModule( хэндел основного приложения ) с помощью GetModuleHandle() и подтягиваеш адрес экспортируемой функции которая возвратит тебе объектную ссылку, с пом. фун. GetProcAddress(). Так что не вижу в этом ничего плохого и недокументированного. А по поводу "Покажите, где там написано, что можно передавать обычные объекты из Dll" могу сказать только одно ("железная логика") если не написанно это не значит что так делать нельзя. В дельфовском хелпе многое чего не написанно и многое что следовало бы описать. И участников форрума я не учу плохому, я просто опроверг ваше высказывание о том что передавать объекты в Dll или из Dll запрещено!!! Кем запрещено? |
||||
|
|||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
Это сообщение отредактировал(а) gonzales - 7.4.2007, 19:28 --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
мляяяя, нашел ощибку!!!
есть еще системная библиотека hid.dll. Она и перекрывала вызов процедуры. Вопрос можно закрывать, все работает, всем спасибо. --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
То что писал не имело прямого отношения к данному случаю. Тема уже не раз обсуждалась, потому я даже не хочу тут обсуждать эту ересь. Если охота доказывать, что это можно поищите по форуму нужную тему. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |