![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Привет.
1. Присваиваем Application.Handle в DLL переданного значения Application.Handle exe'шника (dll - delphi 2010 unicode, exe - delphi 2007 Ansi) 2. При открытии формы в DLL возникает AV, при этом форма открываеться и типа все работает, но окно AV опять появляеться 3. Без присваивания Application.Handle ошибок нет. Предлагать переписать ече на delphi 2010 (при этом ошибки не возникает) не предлагать плиз ;) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
сам-то понял, что написал?
|
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Короче смысл в том что есть dll (ansi) компельнутая на 2007 и есть программа на 2010 (unicode), вызываем функцию в dll в качестве параметра Application.Handle от exe, в функции присваиваем переданный Application.Handle от exe, дальше эта функция показывает модальную форму на экране, но при появлении формы получаем AV ли Упривелегет инструктион |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
А если так ? Там где /!!! и происходит ошибка
Присоединённый файл ( Кол-во скачиваний: 10 )
DtReport.pas 0,68 Kb |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Скорее ошибка происходит в DLL
|
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Я, если чесно, так же думаю. Но сотрудник, который пишет, думает что delphi виноват. Используеться репорт билдер. Когда показываеться форма, для формирования отчета, появляеться AV или EПривелегиес.
Я вообще думаю что это проблема с правами, хотя почему тогда это нормально работает с exe, если его компельнуть в 2007 ?!... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
В каких случая чаще всего происходит AV? Если программа пытается получить доступ к тому объекту, который ещё не создан, так?
А вообще, что означает строка и для чего она?
|
|||
|
||||
| ZBugz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Как только натыкаеться на
Если ее не передавать, все замечательно запускаеться, но понятно дело кое что не работает.
Application.Handle exe передаеться в dll А для чего, это я в понедельник только скажу. |
||||||
|
|||||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
дело в том, что Application.Handle в приложении и в библиотеке один и тот же может быть, в библиотеке нужно вычислять дискриптор по другому Добавлено через 9 минут и 41 секунду этот модуль из программы или из библиотеки? |
|||
|
||||
| ZBugz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Ну если это так, значит не совместимость в версиях delphi ?
Из exe |
||||
|
|||||
| podkashey |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 28.1.2014 Репутация: нет Всего: нет |
Что получилось в итоге? Избавиться от АВ удалось? А то такая же проблема примерно в том же месте. Точнее, сама строка отрабатывает нормально, а когда ДЛЛ начинает формы создавать идет АВ. Хотя думаю, что это все равно связано с хэндлом. |
||||||
|
|||||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
ZBugz, можно глянуть код dll, в котором вызывается модальная форма и код exe, который вызывает код dll? Это сообщение отредактировал(а) Poseidon - 29.1.2014, 20:29 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Связана проблема, что хэндл главного окна в старших версиях переместился. Я уже не помню точно откуда куда, но вероятно переместился из Application в окно первой формы созданной через CreateForm .
Если написать псевдокодом, то примерно так нужно, объединять
Подразумевается, что Application.MainFormHandle из экзешника передаем в Dll, а DllApplication.Handle это просто Application.Handle в Dll . По крайней мере в документации написано именно так делать. Но тут важно не забыть, перед выгрузкой Dll вернуть старый хэндл, а то Dll благополучно начнет не своевременно уничтожать главное окно программы. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Что получилось не знаю, я не для себя спрашивал. Я уже не работаю в той конторе.
DLL был чей то, исходников у программиста не было, знал только на чем он написан и все. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |