![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видимость переменных в разных модулях
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