Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как выполнить финанльные операции в DLL пр ее выгрузке из памяти?   Найти похожие ветки 

 
Rudis   (2004-09-02 14:08) [0]

В общем проблема такая, имеется ряд DLL-ок с однотипными процедурами, создания формы, удаления ее и задания хендла для IBDataBase. Все однотипно, только содержимое форм разное. При выгрузке динамически подгруженных библиотек происходит ошибка. DLLProc  использовал, когда выгружаю одну DLL-ку - проблем нет, но если у меня их две то после выгрузки ругается на попытку чтения для несуществующего элемента. Что любопытно, адрес DLLProc, пока не поменял, я сохраняю в локальной переменной в DLL-ке, но он nil, хоть до этого я предыдущий и назначал.


 
Digitman ©   (2004-09-02 14:25) [1]


> хоть до этого я предыдущий и назначал


"до этого" - это когда ?


 
kaZaNoVa   (2004-09-02 14:27) [2]

в делфе - у меня не разу не получалось !
вот на асме , си, dll_process_datach (как-то так) пашет ....
а на делфе что-то не хочет ...


 
Rudis   (2004-09-02 14:50) [3]

> "до этого" - это когда ?

Ну, может малость сумбурно излагаю, голова уже не варит, третьи сутки мудохаюсь над этим, а время гонит, еще вчера прогу установить должен был.

Имеется ввиду, что я в каждой загружаемой ДЛЛ-ке сохраняю прежнее значение DLLProc, и опосля всего ее восстанавливаю.
Как говорится на всякий який...
Так вот, при выгрузке одной из библиотек все ок, а как выгружаю вторую - так гемор, ацесс виолейшн. А мне таких штук 10-15 надо.
Может недопонимаю как DLLProc работает? (Более чем вероятно)
Но что то делать нужно...


 
Rudis   (2004-09-02 14:56) [4]

Я только сейчас подумал, а не от того ли это, что я Application.Handle в ДЛЛ-ке меняю на Хендл проги, но не восстанавливаю при выгрузке? К сожалению проверить до вечера не смогу, с собой исходников на работе нету...
Может еще какие варианты есть подскажите, авось до завтрешнего утра получится сделать...


 
Digitman ©   (2004-09-02 15:02) [5]


> Может недопонимаю как DLLProc работает? (Более чем вероятно)


скорей всего так и есть


> сохраняю в локальной переменной в DLL-ке


и эта переменная, будь она хоть локальная хоть глобальная, имеет смысл только для ДАННОГО экземпляра ДЛЛ ... в других экземплярах ДЛЛ эта переменная - своя, и она не имеет ничего общего с аналогичными по назначению переменными в прочих загружаемых экз-рах ДЛЛ

имеется ввиду, что если в 1.dll и в 2.dll была декларирована некая переменная old_dllproc: Pointer, то при однократных LoadLibrary("1.dll") и LoadLibrary("2.dll") в контекстах различных процессов системой будут созданы две совершенно независимых области памяти в секциях инициализированных данных каждого из этих процессов



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
14-1095453117
GanibalLector
2004-09-18 00:31
2004.10.10
Проверка существования почты на HOTMAIL


3-1095060867
Роман Снегирев
2004-09-13 11:34
2004.10.10
Разрыв коннекта


3-1094907368
stainer
2004-09-11 16:56
2004.10.10
импорт данных из excel


1-1096117436
Cherepovets
2004-09-25 17:03
2004.10.10
Проверка пути


14-1095503081
Ломброзо
2004-09-18 14:24
2004.10.10
Взял и умер!