Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 12:10   #1
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию Инициализация переменных и полей "по умолчанию"

Здравствуйте!
Насколько я знаю компилятор автоматически инициализирует глобальные переменные так: целочисленные значения ноль, строковые значения ' ', а булевские — False.
Локальные переменные не инициализируются компилятором автоматически.
А что с полями объектов?
avd вне форума Ответить с цитированием
Старый 20.06.2012, 12:14   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вы о property?
Так же как и с локальными переменными, если на них ссылаются. По этому там есть слово default, которое определяет значение по умолчанию у property.
Человек_Борща вне форума Ответить с цитированием
Старый 20.06.2012, 12:26   #3
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Нет я не о property а вот об этих штуках

Код:
private
  vodka: string;
  cena: integer;
avd вне форума Ответить с цитированием
Старый 20.06.2012, 12:30   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

все поля класса зануляются при создании инстанса:

Код:
class function TObject.InitInstance(Instance: Pointer): TObject;
begin
  FillChar(Instance^, InstanceSize, 0);
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.06.2012, 14:50   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Человек_Борща, ключевое слово Default для не-массивовых проперти не делает указанное значение значением по умолчанию, оно лишь указывает, что при сериализации/десериализации объекта класса это проперти не надо записывать/читать, а вот в конструкторе разработчик сам должен позаботиться о присвоении такого дефолтного значения.

Раздел справки по данному вопросу: Storage Specifiers
phomm вне форума Ответить с цитированием
Старый 20.06.2012, 16:22   #6
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Простите тупого, но я так и не понял, обнулять поля в конструкторе или компилятор сам об этом позаботится?
avd вне форума Ответить с цитированием
Старый 20.06.2012, 16:24   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

сам, но особо рассчитывать на это, имхо, плохой стиль.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.06.2012, 16:33   #8
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Спасибо, теперь буду знать.
avd вне форума Ответить с цитированием
Старый 12.10.2013, 00:01   #9
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Все поля объекта инициализируются при его создании. Поэтому в компонентах поля не инициализируют в конструкторе, если они должны быть установлены в нулевые значения, все они и так обнулены по умолчанию. Но если переменная объявляется в модуле или подпрограмме то её обязательно нужно инициализировать (см. Объявление и инициализация переменных).
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 12.10.2013, 00:40   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Но если переменная объявляется в модуле
, то она тоже инициализируется автоматически. Ибо она тоже считается глобальной переменной.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
Как добавить "значение по умолчанию" в базе Access? bafy БД в Delphi 6 13.02.2009 12:29
Как прописать в ключ "(По умолчанию)" UnD)eaD)Snake Общие вопросы Delphi 4 16.08.2007 12:00