Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / С какой версии Delphi поля класса при его создании инициализируются нулями? / 9 сообщений из 9, страница 1 из 1
27.04.2018, 12:54
    #39637377
С какой версии Delphi поля класса при его создании инициализируются нулями?
У меня есть стойкое ощущение что так было всегда.
Так ли это?
У меня сегодня был разговор где два специалиста по Delphi утверждали что в их Delphi 7 поля класса нулями не инициализируются и им приходится инициализировать их в конструкторе.
Не доверять им не могу. Пытаюсь понять как такое может быть.
...
Рейтинг: 0 / 0
27.04.2018, 12:59
    #39637385
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
Пятёрка инициализирует
...
Рейтинг: 0 / 0
27.04.2018, 13:03
    #39637393
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
в D7 точно инициализируются
...
Рейтинг: 0 / 0
27.04.2018, 13:06
    #39637396
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class function TObject.InitInstance(Instance: Pointer): TObject;
var
  IntfTable: PInterfaceTable;
  ClassPtr: TClass;
  I: Integer;
begin
  FillChar(Instance^, InstanceSize, 0);
  PPointer(Instance)^ := Pointer(Self);
  ClassPtr := Self;
  while ClassPtr <> nil do
  begin
    IntfTable := ClassPtr.GetInterfaceTable;
    if IntfTable <> nil then
      for I := 0 to IntfTable.EntryCount-1 do
        with IntfTable.Entries[I] do
        begin
          if VTable <> nil then
            PPointer(@PByte(Instance)[IOffset])^ := VTable;
        end;
    ClassPtr := ClassPtr.ClassParent;
  end;
  Result := Instance;
end;
...
Рейтинг: 0 / 0
27.04.2018, 13:20
    #39637415
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
необычный вопрос,

Именно класса - с самого начала, руками надо object инициализировать, AFAIR.
Пруф, delphi 2
[/img]
...
Рейтинг: 0 / 0
27.04.2018, 15:10
    #39637528
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
необычный вопросдва специалиста по Delphi утверждали что в их Delphi 7 поля класса нулями не инициализируются
Это ложь.
...
Рейтинг: 0 / 0
28.04.2018, 09:01
    #39637849
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
А что, еще есть такие, кто полагается на дефолтные значения?

Добавил свойство, будь добр инициализировать его начальным значением)
...
Рейтинг: 0 / 0
28.04.2018, 09:15
    #39637853
jmp_original
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
asutp2, ну-ну.
...
Рейтинг: 0 / 0
28.04.2018, 09:15
    #39637854
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии Delphi поля класса при его создании инициализируются нулями?
asutp2А что, еще есть такие, кто полагается на дефолтные значения?

Добавил свойство, будь добр инициализировать его начальным значением)

Если по логике дефолтное значение не ноль, то да. А если ноль, пустая строка итд то Зачем выполнять одно и тоже два раза?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / С какой версии Delphi поля класса при его создании инициализируются нулями? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]