Главная страница
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-1094836526
BigError
2004-09-10 21:15
2004.10.10
MySQL: VarChar -> Decimal


14-1095918599
Lexxx
2004-09-23 09:49
2004.10.10
Мастера, подскажите, можно ли в XP Home поставить IIS 5.0?


14-1095916906
Dmitriy O.
2004-09-23 09:21
2004.10.10
Купил Сканер


1-1095873161
GanibalLector
2004-09-22 21:12
2004.10.10
CLSIDFromProgID


14-1095429384
Sekr
2004-09-17 17:56
2004.10.10
Как устанавливать компоненты под Delphi7