|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.08.2011, 18:10 | #1 |
Пользователь
Регистрация: 02.10.2009
Сообщений: 93
|
Обьявление переменной в var
Как то я засомневался в одном вопросе.. вот если переменная обьявляется в блоке var, например:
Код:
Или в коде нужно писать: Код:
|
22.08.2011, 18:19 | #2 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
если переменная глобальная то можно написать
Код:
|
22.08.2011, 18:21 | #3 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 71
|
наоборот, если переменная глобальная, она по-умолчанию инициализируется нулем, или пустой строкой (если тип строка), или nil, если тип указатель
Техника несовершенна: компьютеру, чтобы прийти в себя, нужно три пальца, человеку - всего два!
|
22.08.2011, 18:25 | #4 | |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
Цитата:
|
|
22.08.2011, 19:15 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
AlexDn
Цитата:
Delphi более терпима к использованию неиницилизирвоанных переменных. И DenNik2006 прав. Но! Вы, как программист ДОЛЖНЫ проиницилизировать переменную, если собираетесь к ней обращаться далее на чтение.. p.s. далеко не всегда переменную нужно иницилизировать нулём, это от алгоритма зависит! |
|
22.08.2011, 21:33 | #6 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Код:
Она ни разу не глобальная. И не локальная тоже. И не обязана быть равна нулю в общем случае. Ибо упомянутой инициализацией заведует линкер. А дельфийский линкер - не единственный во Вселенной линкер. Правильный ответ такой: если переменная статическая, то она будет инициализирована ожидаемым образом только в случае использования конкретного линкера. |
22.08.2011, 21:41 | #7 | |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Цитата:
Лично я, всегда делаю инициализацию значения переменной. Мне кажется что вы вводите в заблуждение кодеров, про статические переменные. Если в документации сказано, что глобальные переменные инициализируются нулевыми значениями, то оно так и есть, для тех кто сомневается (да и для всех полезно) смотрим на значение глобальных переменных в отладчике. А ссылкаться на то, что некоторые компонеты могут быть заменены это смешно.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 22.08.2011 в 21:48. |
|
22.08.2011, 22:06 | #8 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
это сказано в документации по Делфи.
вы уверены что так же будет везде?(а ведь есть например Лазарус) всегда лучше инициализировать явно. Цитата:
не нужно полагаться на компилятор. (кстати вообще то это поведение компилятора, а не линкера, ибо он считает что если переменной не присвоено начальное значение то она равна 0/nil) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
23.08.2011, 03:59 | #9 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
а я где-то читал что все типы в делфи так или иначе - указатели.
и если созданная переменная не обнулится вами, или еще какой неведомой хренью, то ее значением по-идее должен быть какой-нибудь мусор, т.е. то, что раньше было там, где теперь выделена память под эту переменную. но это так, чисто мои философские размышления =) кстати, все стринги, которые я когда-либо создавал были равны '' (пусто), а еще я как-то создал массив интегров, и по невнимательности пытался его читать, предварительно не записав туда данные - ну так вот, читалась всякая хрень, всегда разная - очень похоже на то что я описал выше. |
23.08.2011, 04:33 | #10 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обьявление глобальной функции | Scorpeon | Общие вопросы Delphi | 3 | 22.04.2010 11:11 |
Обьявление массива | bondik | Общие вопросы C/C++ | 1 | 31.03.2009 19:09 |
обьявление классов | пыхонин филипп | Помощь студентам | 1 | 21.03.2009 20:10 |
var | Черничный | Общие вопросы Delphi | 9 | 25.06.2008 17:10 |
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) | Arkuz | Общие вопросы Delphi | 12 | 25.09.2007 20:47 |