![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| mr.Anderson |
|
||||||||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Возникла проблема при написании DLL.
Собственно код DLL:
DLL позиционируется как плагин к моей программе. В связи с этим я ввел глобальный тип:
А также глобальный динамический массив с плагинами:
Код загрузки плагинов:
Код вызова функции из DLL выглядит так (именно здесь происходит ошибка, судя по заверениям отладчика):
Ошибка в следующем. Выполнение (по отладчику), доходит до строки ShowMessage( GetFileExpression() ); (из последнего фрагмента кода). Верно выводит сообщение с правильным текстом (как в DLL описано). Однако, после этого вылетает Access Violation с ошибкой 'Недопустимая операция с указателем' ('Invalid Pointer Operation'). Как я ни пытался отловить ошибку - найти ее причину не смог. Ошибка 100% где-то в приведенных фрагментах кода, т.к. если убрать вызов ShowMessage, то Access Violation не возникает. Вопрос описал достаточно подробно, надеюсь. Кто может помочь? Это сообщение отредактировал(а) mr.Anderson - 7.8.2007, 17:11 |
||||||||||
|
|||||||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Ну так кто ж тебя учил юзать стринги в dll?
Да ещё для плагинов... Сейчас конечно тебе тут напомнят про ShareMem... Но что за плагин, если его можно только на дельфи написать? Тогда уж bpl юзай. Или используй общие типы: pointer, dword, PChar... |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
А у меня не компилится и не работает. Даже с ShareMem. После его подключения эта же ошибка стала лезть после закрытия приложения.
Добавлено через 7 минут и 28 секунд В общем, вопрос решил. Через FastShareMem и обход глюков в OnClose формы. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
ShareMem должно быть первым в списке как в библиотеке, так и в твоем приложении(не в unit1.pas, а в dpr-файле!)
тогда никаких глюков не будет. впрочем, Showy прав - тогда уж лучше bpl юзать, раз связь с другими ЯП не прредусматривается |
|||
|
||||
![]()
|
| Правила форума "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. |