powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Инициализация полей структурных констант по умолчанию
49 сообщений из 49, показаны все 2 страниц
Инициализация полей структурных констант по умолчанию
    #40101819
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, где прочитать про то, что они инициализируются нулями. Нигде не нашёл, а хочется уверенности.

Я вот о чем.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
type
  TRec = record
    a: Integer;
    b: Integer;
    c: Integer;
    c1: Integer;
    c2: Integer;
    c3: Integer;
    c4: Integer;
    c5: Integer;
    c6: Integer;
    d: Integer;
  end;

procedure TForm1.Button5Click(Sender: TObject);
const
  a: Array[ 1 .. 15 ] of TRec = (
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 ),
    ( a: 1 )
  );
var
  i, j: Integer;
  S: String;
begin
  Memo1.Lines.Clear;

  for i := Low( a ) to High( a ) do begin
    S := '';
    for j := 0 to sizeof( TRec ) - 1 do
      S := S + IntToHex( Byte( PAnsiChar( @a[ i ] )[ j ] ), 2 ) + ' ';

    Memo1.Lines.Add( S );
  end;
end;


Выводит всегда все нули (кроме младшего байта, как явно указано мною при объявлении константы)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Т.е. как будто заливка нулями по умолчанию есть. Пробовал извращаться, посредине пропускать - всегда так.
Но, блин, где прочитать про этот эффект, чтобы не бояться использовать?
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101831
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock> Подскажите, где прочитать про то, что они инициализируются нулями.

Declaring variables, в конце.
Там упомянуто и отличие
локальных и глобальных
переменных в этом плане.


YuRock> Нигде не нашёл, а хочется уверенности.

Я бы не закладывался.
Инициализируй всё сам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101835
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Исходи из того, что типизированные константы это, по сути, глобальные переменные (имено поэтому они не могут участвовать в константных выражениях). Ну а глобалтные переменные всегда инициализируются нулём.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101838
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Ничего я не нашел там, кроме отличия локальных и глобальных, которое и так понятно.
Но спасибо, тоже не знал, где это написано.

If you don’t explicitly initialize a global variable, the compiler initializes it to 0. Local variables, in contrast, cannot be initialized in their declarations and contain random data until a value is assigned to them.


Но дело тут не в этом. У меня в данном примере, кстати, локальная переменная (вернее, даже не переменная, а константа).
И она инициализируется таки нулями, если не указать явно другого.
Вот про это не могу найти.

Нашел только, что все поля структурной константы должны быть перечислены.
The fields must be listed in the order in which they appear in the record type declaration, and the tag field, if there is one, must have a value specified

Ну, так тому и быть.

Гаджимурадов Рустам
Я бы не закладывался


Да, придется, видимо, не закладываться.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101839
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Исходи из того, что типизированные константы это, по сути, глобальные переменные
Ну вот не вижу я этой сути. Если бы было написано об этом где-то - было бы ок.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101844
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Ну вот не вижу я этой сути. Если бы было написано об этом где-то - было бы ок.

Ну ты же в курсе, что в дельфях есть такая е#анина, как изменяемые типизированные константы (writeable typed constants)? И эту хрень можно включать и выключать директивой компилятора. Теперь немного подумать и...
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101848
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
YuRock
Ну вот не вижу я этой сути. Если бы было написано об этом где-то - было бы ок.

Ну ты же в курсе, что в дельфях есть такая е#анина, как изменяемые типизированные константы (writeable typed constants)? И эту хрень можно включать и выключать директивой компилятора. Теперь немного подумать и...
Да, я знаю, и естественно понять, что адреса у таких констант глобальные (как и у любых констант).
Но это ни разу меня не убеждает, что они инициализируются нулями так же, как гл. переменные.

Хотя вот написано:
if the {$J+} compiler directive is in effect, typed constants can have new values assigned to them; they behave essentially like initialized variables.

Но я не хочу {$J+}.
А при {$J-} они ведут себя просто как read-only variables

Мне этого не достаточно для успокоения.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101852
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочешь покоя, то просто прими, что любая неинициализированная переменная
или её часть - источник потенциального геморроя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101856
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Но я не хочу {$J+}.
А при {$J-} они ведут себя просто как read-only variables

Директива не изменяет физического воплощения типизированных констант, она просто разрешает или запрещает их изменять.

Вот наглядный пример, что типизированные константы это глобальные переменные:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
uses
  System.Types;

const
 a : TPoint = ();
 b = 56;
begin
 writeln(nativeint(@a)); // OK
 writeln(nativeint(@b)); // error here
end.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101862
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Вот наглядный пример, что типизированные константы это глобальные переменные:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
uses
  System.Types;

const
 a : TPoint = ();
 b = 56;
begin
 writeln(nativeint(@a)); // OK
 writeln(nativeint(@b)); // error here
end.

Этот пример иллюстрирует только то, что у типизированных констант есть постоянный адрес, как у глобальных переменных. Не более того.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101864
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Если хочешь покоя, то просто прими, что любая неинициализированная переменная
или её часть - источник потенциального геморроя.
Да, я так и поступаю обычно.
Но, блин, задача такова, что нужно сделать огромный константный массив структур, у каждой из которых - гора полей, большинство из которых хотелось бы оставить нулями (в зависимости от типа).
Конкретнее - это дерево настроек (коих тысячи, с разными типами, свойствами и ограничениями).
Очень бы было удобно использовать эту фичу.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копи-паст - тоже удобная фича в данном случае. Достаточно написать одну полную
инициализацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101874
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то вы уж очень загоняетесь. Может, еще и все поля в объекте занулять? Частично заданная структурная константа - значит, все пропущенные поля нулевые. Иначе можно дойти до чего-то вроде
foo := 1;
if foo <> 1 then
foo := 1;
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101877
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Копи-паст - тоже удобная фича в данном случае. Достаточно написать одну полную
инициализацию.
До поры до времени удобная.
А когда, внезапно, приходится добавлять еще одно поле в структуру - придется перелопачивать весь массив вместо того, чтобы указать его только там, где надо.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101880
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Может, еще и все поля в объекте занулять?
1. Про это явно написано в документации (лень искать, но видел, честно).
2. Можно посмотреть метод TObject.InitInstance, в котором первой строкой идет
Код: pascal
1.
FillChar(Instance^, InstanceSize, 0);

чтобы точно понять, что занулять поля в объекте не надо.

Fr0sT-Brutal
Частично заданная структурная константа - значит, все пропущенные поля нулевые.
В сях вроде да, значит, и это описано где-то. Вот про паскаль бы найти такую фразу, кроме как на форумах.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101890
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockпридется перелопачивать весь массив вместо того, чтобы указать его только там,
где надо.

Search-and-Replace запустить, конечно, трудно...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101893
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Этот пример иллюстрирует только то, что у типизированных констант есть постоянный адрес, как у глобальных переменных.

И это значит, что они являются глобальными переменными. А глобальные переменные зануляются. Так-то в доке вообще не сказано, что поля при инициализации можно опускать :) Об этом ещё можно запариться.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101895
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2021 18:06, Kazantsev Alexey пишет:
> Так-то в доке вообще не сказано, что поля при инициализации можно опускать

сказано.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101896
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Что-то вы уж очень загоняетесь. Может, еще и все поля в объекте занулять? Частично заданная структурная константа - значит, все пропущенные поля нулевые. Иначе можно дойти до чего-то вроде
foo := 1;
if foo <> 1 then
foo := 1;
Давно дошли: народ говорил, что без такого в Lotus Notes не жизнь.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101901
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
сказано.

Ссылочку?
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101909
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Мимопроходящий
сказано.

Ссылочку?
Да, мне тоже интересно.
Так-то я нашел пока-что, что поля должны быть инициализированы в порядке полей структуры.
Но я не нашел ни разрешения пропуска, ни указания, что пропуск параметров запрещен.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101920
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Но я не нашел ни разрешения пропуска, ни указания, что пропуск параметров запрещен.

Про запрет пропуска нет, но есть: "specify the value of each field - as fieldName: value, with the field assignments separated by semicolons".
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101926
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
YuRock
Но я не нашел ни разрешения пропуска, ни указания, что пропуск параметров запрещен.

Про запрет пропуска нет, но есть: "specify the value of each field - as fieldName: value, with the field assignments separated by semicolons".
Странно, этого я не нашел (6-я версия).
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101927
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем тогда вообще такое разрешать? Кидал бы ошибку компилятор, да и всё.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101929
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Этот пример иллюстрирует только то, что у типизированных констант есть постоянный адрес, как у глобальных переменных. Не более того.
Этот пример иллюстрируют то, что они не в стеке, а в области данных. А она изначально всегда обнулена.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101933
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Странно, этого я не нашел (6-я версия).

Эта фраза есть даже в мануале по Delphi 5. Ссылку не дам, он у меня бумажный (страница 5-41)

Вот ссылка на актуальную доку: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Declared_Constants#Record_Constants

YuRock
Зачем тогда вообще такое разрешать? Кидал бы ошибку компилятор, да и всё.

Такой способ записи поддерживается при декларировании глобальных инициализированных переменных. Не логично, что при одинаковой форме записи, компилятор будет давать разный результат. А раз в случае инициализированных глобальных переменных не указанные поля будут занулены, то и для типизированных констант нет оснований отжидать другого результата.

p.s. FPC генерирует ворнинг на пропущенные поля.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40101975
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К слову:

YuRock> задача такова, что нужно сделать огромный
YuRock> константный массив структур, ....
YuRock> Конкретнее - это дерево настроек
YuRock> (коих тысячи, с разными типами, свойствами и ограничениями).

Вынеси их во внешний источник - файл, БД и т.д.
В коде этому в любом случае не место.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102027
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
К слову:

YuRock> задача такова, что нужно сделать огромный
YuRock> константный массив структур, ....
YuRock> Конкретнее - это дерево настроек
YuRock> (коих тысячи, с разными типами, свойствами и ограничениями).

Вынеси их во внешний источник - файл, БД и т.д.
В коде этому в любом случае не место.
Они и есть в БД :))
Описания в смысле?
Не согласен. Этот массив нужен только для окна настроек, там ему и место. И добавление новой нужно будет теперь с него начинать.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102028
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
YuRock
Этот пример иллюстрирует только то, что у типизированных констант есть постоянный адрес, как у глобальных переменных. Не более того.
Этот пример иллюстрируют то, что они не в стеке, а в области данных. А она изначально всегда обнулена.
Убедили, буду пропускать :)
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102039
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Убедили, буду пропускать :)
А потом "мы тут заоптимизировали и изменили размещение локальных констант"
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102042
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
YuRock
Убедили, буду пропускать :)
А потом "мы тут заоптимизировали и изменили размещение локальных констант"
Одна из причин - я не планирую переводить этот проект на новые версии дельфей.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102044
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
YuRock
Убедили, буду пропускать :)
А потом "мы тут заоптимизировали и изменили размещение локальных констант"
Я не думаю что они до такой степени идиоты, чтобы ломать гору работающего кода.
А если до такой - надо задуматься о том, стоит ли продолжать с ними работу.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102045
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
_Vasilisk_
пропущено...
А потом "мы тут заоптимизировали и изменили размещение локальных констант"
Одна из причин - я не планирую переводить этот проект на новые версии дельфей .
все так говорят
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102046
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
_Vasilisk_
пропущено...
А потом "мы тут заоптимизировали и изменили размещение локальных констант"
Я не думаю что они до такой степени идиоты, чтобы ломать гору работающего кода.
А если до такой - надо задуматься о том, стоит ли продолжать с ними работу .
а с индюками + опен ССЛ работал?
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102048
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, да.
Но давно.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102062
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
YuRock
пропущено...
Одна из причин - я не планирую переводить этот проект на новые версии дельфей .
все так говорят
Ну разве что МС отключит поддержку x86-программ, а я к тому времени еще буду жив и не уйду на пенсию, и в тот момент решу не уходить.
В общем, причин для перехода должно быть не мало.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102065
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock> Ну разве что МС отключит поддержку x86-программ

Так уже же вроде (то ли в 11, то ли ХЗ).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102069
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Так уже же вроде (то ли в 11, то ли ХЗ).
Та не, там даже делфи7 работает без проблем. Проверено Дефекатором.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102071
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да? Простите. Слышал звон, не проверил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102167
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
Я не думаю что они до такой степени идиоты, чтобы ломать гору работающего кода.
А если до такой - надо задуматься о том, стоит ли продолжать с ними работу.
Работу implementation поломали в XE3, время жизни переменных поломали сейчас. Кто-то еще на что-то надеется?
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102174
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
время жизни переменных поломали сейчас

Не поломали, а сделали, наконец, логичным.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102181
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Не поломали, а сделали, наконец, логичным.
Ну вот и типизированные константы сделают логичными.

А на совместимость - пофиг
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102182
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Ну вот и типизированные константы сделают логичными.

Они уже.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102185
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Они уже.
Локальные константы в глобальной памяти?
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102187
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Локальные константы в глобальной памяти?

По идее, константы вообще могут не иметь физического воплощения, и то что имеем сейчас это сугубо интимные дела компилятора и таки забота об обратной совместимости.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102190
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
По идее, константы вообще могут не иметь физического воплощения
Вот. Это правильная мысль.
Kazantsev Alexey
и таки забота об обратной совместимости.
По сравнению со всем остальным (тот же юникодовский string) это больше похоже на "не дошли руки"
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102192
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
По сравнению со всем остальным (тот же юникодовский string) это больше похоже на "не дошли руки"

Не, обратная совместимость:
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Writeable_typed_constants_(Delphi)In early versions of Delphi and Object Pascal, typed constants were always writeable, corresponding to the {$J+} state. Old source code that uses writeable typed constants must be compiled in the {$J+} state, but for new applications it is recommended that you use initialized variables and compile your code in the {$J-} state.
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102203
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Так можно было бы при {$J-} делать pure-константы
...
Рейтинг: 0 / 0
Инициализация полей структурных констант по умолчанию
    #40102209
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Так можно было бы при {$J-} делать pure-константы

Это усложняет логику работы компилятора, да и нет в этом большого смыла. А вот получать адрес типизированных констант в этом режиме стоило бы запретить.
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Инициализация полей структурных констант по умолчанию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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