Главная страница
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.024 c
3-1094817179
mouse_web
2004-09-10 15:52
2004.10.10
Компонент соединения с базой Firebird


4-1094715591
cheburator
2004-09-09 11:39
2004.10.10
Компоненты для работы с графикой из под WIN API ????


3-1095056516
Uran
2004-09-13 10:21
2004.10.10
Не идет выборка в EasyTable


1-1095586738
appendix
2004-09-19 13:38
2004.10.10
выравнивание в текстовом файле


1-1095715640
lipskiy
2004-09-21 01:27
2004.10.10
Функция поиска подстроки в строке на asmе