function Length(a: &Array): integer;
begin
if a = nil then
Result := 0
else Result := a.Length;
end;
Насчёт той диаграммы по ссылке - я не понял что она означает. Но в .Net у всех ссылочных типов значение по умолчанию - nil.
В паскале есть всего несколько типов реализованных по особому. К примеру типизированные файлы - это ссылочные типы, но паскаль всегда инициализирует их сам, поэтому они не могут быть nil. И это только ради совместимости со старыми паскалями.
Но массив - это стандартный .Net -овский тип. Если у него значение поумолчанию будет не nil - это сломает совместимость с .Net .
Это больше звучит как будто это будет выдавать ошибку:
begin
var a: array[1..2] of array of byte;
writeln(a[1]);
end.
Это выводит nil. Но, на сколько я понял, вы имеете в виду этот случай:
begin
var a: array[1..2] of array of byte;
writeln(a[1][0]);
end.
Но, даже если бы массив всегда инициализировался массивом с 0 элеметов - это всё равно выдало бы ошибку, потому что тут индекс выходит за границы.
[quote=“Sun_Serega, post:1044, topic:143”]
Насчёт той диаграммы по ссылке - я не понял что она означает.
[/quote] - это как в дельфи динамический массив объявляется в памяти.
1-й элемент , сколько раз на него сослались.
2-й элемент - длинна массива.
3-й и последующий(имеют объявленный типа) - это уже собственно элементы массива.
[quote=“Sun_Serega, post:1044, topic:143”]
Но, даже если бы массив всегда инициализировался массивом с 0 элеметов - это всё равно выдало бы ошибку.
[/quote] -да, в моём случае точно бы выдало.
Я попробую какой-нибудь тестовый пример создать , может действительно по исполнению это всегда будет эквивалентно.
Недавно на форуме обсуждали возможность установки значка на исполняемый файл, генерируемый компилятором PABC.NET. Это оказалось достаточно простой манипуляцией, но проводить её каждый раз при обновлении очень неудобно. Я хотел бы предложить разработчикам добавить такую возможность непосредственно в компилятор. Оформить это можно директивой вида {$AppIcon 'Icon.ico'}, либо параметром в настройках компилятора.
Вот мне оно все равно, ибо как значок мне не нужен, в обучении он не нужен тоже. “Против” буду только если это станет автоматическим навязчивым сервисом, т.е. потребуется что-то делать, чтобы отказаться. А такого в голосовании нет.
В студии можно выбирать в настройках проекта такое, но глобальная настройка компилятора для любого открытого в IDE проекта - это точно не то что надо.
В то же время, не всегда компиляция происходит из IDE, а про аргументы командной строки компилятора нигде не написано. Поэтому для возможности авто-компиляции - если делать то в первую очередь директивой.
Функционал был удален из-за лицензионных ограничений. Таскать с собой проприетарную майкрософтовскую хреновину времен динозавров, генерирующую .res файл нехорошо.