|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2010, 12:16 | #1 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Что в ссылке на объект, после объявления?
Написал простенький пример.
Код:
потом создать ObjMain:= TObjMain.create; то что будет лежать в ObjMain.Obj ? тест объекта, на форме три лабела, ТЭдит, для вывода результатов, и кнопка стоп: Код:
Понимаю, что это не показатель, что делфя многое делает сама, но расслабляться нельзя. Может, где-нибудь появление nil-а сразу после объявления, документировано? Ну некрасиво мне получится в каждом объекте писать присвоения nil куче его полей, а через одну строчку креатить их (такой у меня текст) |
24.03.2010, 12:48 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ты создал обьект с пустыми полями, Конструктор сам по себе ничего не заполняет, это должен предусмотреть программист. Вот зачем тебе ObjMain.Obj? Что ты дальше с ним делать будешь?
I'm learning to live...
|
|
24.03.2010, 13:16 | #3 | |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Цитата:
Это тестовый пример, у меня структура классов. Если коротко - в конструкторе главного предка вызывается виртуальная процедура заполнения полей дефолтами. В этой процедуре заполняются все поля, из простых типов данных, и проверяется, если поля-объекты assigned, то вызывается их заполнение, иначе - ничего не делать, что мне и надо. Поэтому конструкция: Код:
Код:
|
|
24.03.2010, 13:24 | #4 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
If you don't explicitly initialize a global variable, the compiler initializes it to 0. Object instance data (fields) are also initialized to 0. On the Wiin32 platform, the contents of a local variable are undefined until a value is assigned to them. On the .NET platform, the CLR initializes all variables, including local variables, to 0. |
|
24.03.2010, 13:45 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Если там будет черти-что то твоя программа может падать на ошибку, как это было со старыми ДОСовскими компиляторами, которые не инициализировали переменные.
I'm learning to live...
|
|
24.03.2010, 17:34 | #6 | ||
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Цитата:
Цитата:
alexBlack, спасибо !! но что-то я всё равно торможу, с переводом. Первая часть абзаца ясна: If you don't explicitly initialize a global variable, the compiler initializes it to 0. Object instance data (fields) are also initialized to 0. написано, что поля инициализируются в 0 а вторая часть: On the Wiin32 platform, the contents of a local variable are undefined until a value is assigned to them. относится только к локальным переменным (неопределённые значения), т.е. это не мой случай? |
||
24.03.2010, 20:32 | #7 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
"На платформе Win32 содержимое локальных переменных неопределено пока им не присвоено значение"
Да, это не Ваш случай. Что касается объектов, если интересно, посмотрите реализацию TObject.NewInstance. (этот метод класса вызывается для выделения памяти при создании объекта). Последний раз редактировалось alexBlack; 24.03.2010 в 20:41. |
26.03.2010, 04:30 | #8 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Да, действительно, всё там
а добавив в запрос гуглю "TObject.NewInstance" нашёл и статьи как раз по теме инициализации объекта, довольно интересно почитать. Вот одна из них: http://www.delphikingdom.com/asp/vie...?catalogid=216 Ещё раз спасибо! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В экземпляре объекта не задана ссылка на объект. Что не так? | oleeg | Общие вопросы .NET | 0 | 08.03.2010 20:23 |
[C++] Инициализация массива структур отдельно от объявления | MariyaL | Помощь студентам | 0 | 30.09.2009 12:27 |
Что означает override, идущий после функции? | TwiX | Общие вопросы Delphi | 22 | 09.08.2009 18:31 |
Пробема объявления массива в заголовке процедуры. | mmx358 | Паскаль, Turbo Pascal, PascalABC.NET | 16 | 29.06.2009 09:46 |
Вопрос по поводу объявления класса в С++ Билдер | prikolist | Общие вопросы C/C++ | 2 | 08.04.2009 23:07 |