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

Вниз

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

 
Юрий Ж.   (2003-09-25 08:55) [0]

Здравствуйте мастера!
У меня вот какая проблема:
В DLL прописана переменная какого либо типа.
Из функции той же DLL она вызываетсы и из реестра получает значение.
Если потом из другой функции DLL вызывать эту переменную, то из нее не получаетсы получить значение.
Возможно описано не очень понятно, но...
Помогите!


 
Verg ©   (2003-09-25 09:02) [1]


> Возможно описано не очень понятно, но...


Да уж...
Лучше пример кода - как описана эта переменная, где, что значит
> не получаетсы получить значение.


Как это - не получается? Не дается, упирается, визжит, ругается матом? Что?


 
HolACost! ©   (2003-09-25 09:11) [2]

как я понял- есть глобальная переменная - одна фунция из ДЛЛ записывает туду значение, а другая считывает и возвращает!!! Так?
Проблему скорее всего в том, что всётаки тип у тебя какой-нить строковый!


 
HolACost! ©   (2003-09-25 09:14) [3]

Да и ещё - в одном процессы вызываешь эти переменные или в разных?


 
VAleksey ©   (2003-09-25 10:06) [4]

Проиллюстрируй кодом где
а) Описана переменная
б) Присваивается ей значение
г) Читается значение


 
panov ©   (2003-09-25 10:12) [5]

>HolACost! © (25.09.03 09:11) [2]

Неважно какого типа переменная. При использовании внутри DLL проблем быть не должно.


 
HolACost! ©   (2003-09-25 10:33) [6]

panov © (25.09.03 10:12) [5]
Имелось ввиду, что там может передаваться строка из одного процесса в другой или в рамках текущего!

А в пронципе - код в студию, хотя он помоему уже убёг!


 
PVOzerski ©   (2003-09-25 10:34) [7]

[5] - Если в рамках одного процесса.


 
panov ©   (2003-09-25 10:51) [8]

>PVOzerski © (25.09.03 10:34) [7]
[5] - Если в рамках одного процесса.

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

Я имею ввиду такие конструкции:

var
GlobalInDLLVar: String;

//Эта функция не экспортируется
function MyFunc1(const AStr: String): String;
begin
if Length(aStr)>0 then Result := Copy(aStr,1,10)
else Result := "";
end;

//Эта функция экспортируется
function MyFuncExp:ShortString;stdcall;
begin
GlobalInDLLVar := StringOfChar("1",500);
Result := MyFunc1(GlobalInDLLVar);
end;

export
MyFuncExp;


 
Юрий Ж.   (2003-09-26 17:51) [9]

Я хочу уточнить(только что разобрался):
Когда я устанавливаю системный Hook на клавиатуру назначается функция обработки при сообщении, и если я уже вне этой функции проинициализировал переменную(даже до запуска Hook) то та не видит изменений.
Короче работает только если инициализировать прямо в этой функции.
Как от зтого избавиться?


 
Юрий Зотов ©   (2003-09-26 17:57) [10]

> Юрий Ж. (26.09.03 17:51) [9]

> то та не видит изменений.
Потому что инициализация происходит только в ОДНОМ процессе.

> Как от зтого избавиться?
Переменная должна быть глобальной по отношению ко ВСЕМ процессам в системе. См. на этом сайте статью Алексея Павлова по глобальным хукам.


 
Юрий Ж.   (2003-09-27 07:34) [11]

2 Юрий Зотов
Спасибо за совет!



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
14-27742
kopcap
2003-09-19 19:30
2003.10.09
Как запускать CGI скрипты на своём компе ???


1-27431
BlackSun
2003-09-28 15:01
2003.10.09
Размер формы


1-27505
Nikulin
2003-09-26 15:47
2003.10.09
Про сервисы...


3-27309
ExE
2003-09-17 16:55
2003.10.09
Помогите не как не могу понять в чём дело


3-27305
BanderLog
2003-09-18 06:11
2003.10.09
FastReport