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

Вниз

глобальные переменные   Найти похожие ветки 

 
klyonov   (2003-12-01 16:16) [0]

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


 
TUser ©   (2003-12-01 16:17) [1]

Они увидят одно и то же.

implementation
...

var YourVar:TYourVar;


 
Вованчик ©   (2003-12-01 16:18) [2]

передавать параметром в функции DLL


 
Digitman ©   (2003-12-01 16:19) [3]


> есть программа, использующая этот модуль


с т.з. Паскаля - это нонсенс.

Может быть "модуль, использующий другой модуль", но не "программа, использующая другой модуль"


 
klyonov   (2003-12-01 17:33) [4]

2Digitman:
по-моему, это совсем не нонсенс: в Паскале программа и модуль даже определяются по-разному.
вот в С это был бы нонсенс, по-моему.
хотя, не суть важно.
спасибо за ответы


 
Юрий Федоров ©   (2003-12-01 17:37) [5]

{$IFDEF EXE}
var YourVar:TYourVar;
{$ELSE}
var YourVar:PYourVar;
{$ENDIF}

При инициализации отправить в DLL указатель, который и запомнить в глобальную переменную.
В результате получим отказонеустойчивый код :-)


 
Petr V. Abramov ©   (2003-12-01 18:13) [6]

Если под "модулем" понимается unit, то поместите его в BPL и скомпилируйте EXE и DLL с runtime - пакетами.
Если под "модулем" понимается BPL - скомпилируйте EXE и DLL с runtime - пакетами.
Если очень не хочется/очень нельзя компилировать с runtime - пакетами - поместите unit в DLL и напишите функции GetMyVar/SetMyVar.


 
PVOzerski ©   (2003-12-01 18:39) [7]

Стандарт формата файла PECOFF допускает экспорт переменных (точнее, указателей на них). Компилятор Delphi (по крайней мере, известных мне версий) эту фичу не обеспечивает (в отличие, кстати, от FreePascal) - так что для Delphi остается только путь врапперов - >напишите функции "GetMyVar/SetMyVar".


 
Digitman ©   (2003-12-01 18:42) [8]


> klyonov


понятие "глобальность переменной" применимо на уровне одного и того же проекта

DLL-же и EXE-проект - это разные проекты


 
klyonov   (2003-12-01 19:03) [9]

"понятие "глобальность переменной" применимо на уровне одного и того же проекта

DLL-же и EXE-проект - это разные проекты"

так я сразу и писал, что проекты разные:
я имел ввиду "программа" = .EXE
в общем, не поняли друг друга



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-36666
Great DAN
2003-11-30 00:40
2003.12.12
Как разделить форму?


9-36494
s-k
2003-05-26 15:43
2003.12.12
Квест


1-36663
Igit
2003-11-27 10:17
2003.12.12
Как сохранить IStream в файл?


14-36847
ИМХО
2003-11-19 05:30
2003.12.12
Уэльс - Россия... ваши прогнозы, господа?


3-36562
velial
2003-11-20 16:56
2003.12.12
множественный SELECT