![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Проблема заключается в следующем:
Форма из DLL (модальный вызов) после закрытия передаёт переменную типа shortstring в главный модуль. Но при установки компонента поддержки стиля оформления Windows XP, ругается с ним при закрытии главной формы. Вот код формы из DLL:
Вот код приложения: ......... procedure CreateClassForm(AppHandle: THandle); external 'ClassDef.dll'; function GetLabelText:ShortString; external 'ClassDef.dll'; procedure DestroyClassForm; external 'ClassDef.dll'; ................ Это сообщение отредактировал(а) Girder - 7.3.2006, 09:35 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
вообще по этому коду ничего не понял, но попробуй передавать не shortstring, а PChar...
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Происходит тоже самое.
Вот код формы из DLL:
Это сообщение отредактировал(а) Snowy - 7.3.2006, 18:16 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
former, постарайся сам использовать кнопочку "Код". Чтобы потом за тобой не редактировать.
|
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Хорошо, Snowy.
Важное замечание об организации памяти DLL: модуль ShareMem должен быть включён первым в предложениях uses в библиотеке и в вашем проекте (выполните Project | View Source), если ваша DLL экспортирует какие-то процедуры и функции, которым передаются или от которых получаются строки в виде параметров или значений функции. Это относится ко всем строкам, пересылаемым или получаемым из DLL, даже тем, которые вложены в записи и классы. ShareMem является интерфейсным модулем для диспетчера распределяемой памяти BORLNDMM.DLL. Чтобы избежать использования BORLNDMM.DLL, передавайте строковую информацию посредством патраметров типа PChar или ShortString.
Это не помогает. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
а на что хоть ругется?
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Главный модуль работает с базой данных. При её пополнении, для формирования одной из перемнных используется форма из DLL, закрывая которую в основной модуль передаётся значение типа ShortString. Опубликовав полученные данные в базу, при закрытии главного модуля, происходит задержка по времени, а затем появляется сообщение:
Главное приложение.exe raised to many consecutive access violation at 0x56261531: read of adress 0x0000001. Я работую в Delphi 7. Когда убираешь компонент поддержки стиля XP, всё становится нормально. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
в длл? в приложении или в длл? на какой строчке это происходит? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
former, попробуй в ручную подключить файл с XP манифестом Delphi7\Lib\WindowsXP.res при этом не используя компонент TXpManifest.
Положи этот файл в папку рядом с исходниками, а затем добавь в юнит формы директиву:
И посмотри что из этого выйдет Это сообщение отредактировал(а) bartram - 8.3.2006, 09:39 |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Я это уже пробовал. Не помогло, т.к. этот манифест идентичен компоненту Delphi.
-------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
![]()
|
| Правила форума "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. |