Главная страница
    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.035 c
3-1101122826
a3a3ello
2004-11-22 14:27
2004.12.19
Хранимые процедуры в Interbase


3-1100696705
Moiseev-KN
2004-11-17 16:05
2004.12.19
Не получается сохранить в базе значение типа Currency


1-1101908075
gek1
2004-12-01 16:34
2004.12.19
ListBox. Скроллинг по горизонтали


1-1101997170
REA
2004-12-02 17:19
2004.12.19
Быстрый вывод Bitmap


14-1100952113
ИМХО
2004-11-20 15:01
2004.12.19
Чемпионат Испании: турнир прогнозов 2





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский