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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
7-36863
Morg
2003-10-05 01:04
2003.12.12
Пичатаем !!!


1-36706
Dysan
2003-12-02 14:43
2003.12.12
Tchart


1-36633
hooky-mars
2003-11-30 14:20
2003.12.12
Как сохранить класс


1-36751
Zheks
2003-12-01 23:02
2003.12.12
Консольное приложение чарез CreateProcess


1-36664
hooky-mars
2003-11-30 15:34
2003.12.12
Как остледить обращения к файлам





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