Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Переменные в DLL.   Найти похожие ветки 

 
novice__man   (2004-12-02 17:42) [0]

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


 
Александр Иванов ©   (2004-12-02 17:56) [1]

Один из вариантов: Описать, глобально, переменную и написать интерфейс доступа к ней(процедуру для изменения и функцию для получения значения).


 
Просто Джо ©   (2004-12-02 17:57) [2]

Использовать файлы, отображенные в память (CreateFileMappingEx). Примеров полно


 
Александр Иванов ©   (2004-12-02 17:58) [3]

Прошу прощения, запарился :).


 
Просто Джо ©   (2004-12-02 18:02) [4]

здесь -Ex - лишнее ;)

Еще раз:
 CreateFileMapping/OpenFileMapping
 MapViewOfFile(Ex)


 
novice__man   (2004-12-02 18:02) [5]

Просто Джо ©   (02.12.04 17:57) [2]
Пока на этом остановлся.
Видимо прийдется так и делать!


 
Просто Джо ©   (2004-12-02 18:03) [6]

novice__man   (02.12.04 18:02) [5]

>> Видимо прийдется так и делать!

А что так скептически? Это очень удобный и совершенно законный способ. Что называется "без извращений".


 
novice__man   (2004-12-02 18:12) [7]

Просто Джо ©   (02.12.04 18:03) [6]
Пока еще ни разу не занимался этим вопросом.


 
Yuri-7   (2004-12-02 23:05) [8]

В DLL пишешь:
...
var1: integer;
var2: shortstring;
exports var1,var2;

В вызывающей программе:
...
var
pvar1: Pinteger;
pvar2: Pshortsring;
...
begin
 Handle := LoadLibrary("test.DLL");  
 pvar1:=GetProcAddress(Handle, ‘var1’);
 pvar2:= GetProcAddress(Handle,‘var2’);
..
end;
Далее pvar1^ и pvar2^ можно использовать, как значения переменных для считывания и записи.


 
palva ©   (2004-12-02 23:26) [9]

А если адрес одной из этих переменных вернет какая нибудь функция из DLL, можно ли этим адресом воспользоваться в основной программе? Иными словами общее ли у этих загрузочных модулей адресное пространство?


 
Yuri-7   (2004-12-03 05:38) [10]

Похоже, что можно. Пространство не общее, у DLL все-таки свое, но доступное


 
novice__man   (2004-12-03 07:31) [11]

uri-7   (02.12.04 23:05) [8]
При каждом вызове DLL создается свое адресное пространство (!!!), хотя физически загруженна одна копия библиотеки!!!
Так вот ваш пример не демонстрирует РАСШАРИВАНИЯ ресурса в библиотеке!
А с доступом к ресурсам, функциям, процедурам ОДНОГО экземпляра проблем не существует.



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

Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
14-1101538710
syte_ser78
2004-11-27 09:58
2004.12.19
Програмное создание алиаса


1-1101961607
klyg
2004-12-02 07:26
2004.12.19
WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER)


9-1092186341
Xerx
2004-08-11 05:05
2004.12.19
Как работает OpenGL


1-1102057217
denis24
2004-12-03 10:00
2004.12.19
TdateEdit.date


6-1096984220
nikulin
2004-10-05 17:50
2004.12.19
TIdFTP не считывает названия каталогов!?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский