Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Видимость переменных в разных модулях


Страницы:   1 2

Pcrepair ©   (2012-06-07 11:39:00) 

Добрый день
Есть
Unit1 - основной модуль, содержит форму
unit2 - без формы, содержит процедуру, вызываемую из Unit1
Data: string; - глобальная переменная для хранения текста

Если разместить Data в модуль Unit2 перед implementation то все нормально работает, Data доступна подпрограммам и из Unit1 и Unit2

Если разместить Data в модуль Unit1 перед implementation, то из Unit2 она не доступна

уже размещал Data в секцию public в Unit1 и вводил Unit1 в секцию uses unit2, ничего не помогает

public
 var
   Data: string;
 end;

Кто подскажет в чем дело? нужно разместить переменную в основном модуле, но чтоб она была доступна в подключаемых модулях


AV   (2012-06-07 12:45:00) [21]


> если в процессе работы программы значение глобальной переменной
> будет меняться более одного раза (

по голове не бить :) всего 3 минуты прошло, не успел :)


AV   (2012-06-07 12:43:00) [22]

а если есть, допустим Http консоль управления программой, и продюсер страниц, и еще некоторые модули
все должны знать IP компа, что бы генерировать ссылки, приводящие опять же на себя.
Тогда без глобальной никак, имхо.
Не писать же класс с единственным методом GetMyIPAddr


Pcrepair   (2012-06-07 12:42:00) [23]

ну это просто по ошибке в уните2 не там указал в uses унит1


robt   (2012-06-07 12:40:00) [24]

читай "старые" книги, по делфе 3-5 тогда еще гугла не было...


DVM   (2012-06-07 12:40:00) [25]


> Pcrepair ©   (07.06.12 12:17) [4]


>  а может ГлобПерем?

ну вобщем то, если в процессе работы программы значение глобальной переменной будет меняться более одного раза (желательно вообще, чтобы этот один раз был при старте программы), то такие переменные лучше не использовать.


ProgRAMmer Dimonych   (2012-06-07 12:39:00) [26]

> [7] robt   (07.06.12 12:35)

Как ни странно, тоже не припомню книжки, где бы это было написано так, чтобы бросаться в глаза. Сам разбирался с этим простым правилом по help'у, когда понадобилось. Но для этого надо, чтобы такой вопрос возник, а до того можно в Unit1.pas глобальные переменные создавать - и ни разу не задуматься.


robt   (2012-06-07 12:35:00) [27]


> Pcrepair ©   (07.06.12 12:30) [6]

да быть такого не могёт !!!
все что в interface видно в других модулях, все что implementation в текущем


Pcrepair   (2012-06-07 12:30:00) [28]

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


robt   (2012-06-07 12:26:00) [29]


> нужно разместить переменную в основном модуле, но чтоб она
> была доступна в подключаемых модулях

офигеть вопросы пошли, первая глава любой книги "дельфи для чайников"


Pcrepair   (2012-06-07 12:17:00) [30]


> Вообще-то, так делать плохо

что именно плохо?
использовать несколько модулей а может ГлобПерем?


Sha   (2012-06-07 11:47:00) [31]

> Юрий Зотов ©   (07.06.12 11:44) [1]

[2] - это не тебе , разумеется )


Sha   (2012-06-07 11:46:00) [32]

Вообще-то, так делать плохо. Но если очень хочется,
то можно вынести все такое в отдельный модуль и подключать его там,
где требуется.


Юрий Зотов   (2012-06-07 11:44:00) [33]

1. Размещаете переменную в секции interface основного модуля
2. В подключаемых модулях пишете uses unit1 в секции implementation


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо