![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Исправил множество мелких и крупных глюков в подключенном мной ДЛЛ. Откомпилировал, и УРА!!! Ошибок нет... Но когда я запустил..... Выдается месага, что программа (моя) выполнила недопустимую операцию и будет закрыта
Хелп плиз кто чем могет -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Кстати, и еще... Можно ли в ДЛЛ использовать глобальные переменные и как они будут работать.
Например: я, вызвав одну из функций ДЛЛ, задал значение глобальной переменной. после этого через некоторое время я вызвал другую функцию, которой требуются эти значения. Будут ли они сохранятся? Если нет, то как это можно обойти? -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
1) Проверь всю загрузку DLL и вызов её процедур;
2) Создай отдельный модуль в приложении; засунь туда все процедуры из DLL; отмени загрузку DLL и посмотри, что получится. Таким образом я иногда нахожу ошибки в процедурках DLL. Про переменную: Лучше храни её в приложении, т. е. запихни туда результат выполнения некой операции, а через некоторое время запусти операцию, передав ей в качестве параметра сохранённый результат. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
можно отлаживать одновременно и DLL и программу её использующую: Run -> Pararmeters -> Host Application, может это спасет отца русской демократииииии
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Лучше конечно было бы хранить ее так, чтобы приложение "не знало" о ней... Вернее даже обязательно, чтобы эти переменные не зависили от конкретной ДЛЛ. Ведь если в приложение запихнуть переменные, то я не смогу использовать разные ДЛЛ на этом месте... Наверное никто ничего не понял из того что я сказал... -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Кстати, еще вопрос... Можно ли подключать разные ДЛЛ в зависимости от некоторых параметров. Во всех ДЛЛ имена соответствующих функций одинаковы. Нпример, если мы выбрали в списке первый пункт, в юните используется 1.dll иначе - 2.dll
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Конечно можно... |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Хорошо... Переформулирую вопрос: КАК -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Неужели никто неможет помочь?
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Я так думаю, что тут не обойтись без LoadLibrary+GetProcAddress. Схема такая: есть модуль, скажем MyGenericDLL, следующей структуры:
код примерный, я даже не надеюсь, что он скомпиляется использовать, так:
-------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Используй динамический метод загрузки DLL.
что-то вроде этого (попозже посмотрю более конкретно) ... a: procedure (a: integer, b:string); ... implementation ... if c=25 then LoadLibrary('my.dll') else LoadLibrary('notmy.dll'); @a := GerProcAdres('my') //дальше работаем с процедурой |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
достаточно посмотреть выше на один пост -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
To cully
Я такого пока не встречал, обязательно попробую. Или это ты написал чисто условно |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
условно, конечно
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
![]()
|
| Правила форума "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. |