Цитируется из справки Delphi 7: «Для переменной длинной строки или динамического массива SetLength
перераспределяет строку или массив, на которые ссылается S , на заданную длину. Существующие символы в строке илиэлементы в массиве сохраняются, но содержимое вновь выделенного пространства не определено . Единственное исключение - увеличение длины динамического массива, в котором элементы являются типами, которые должны быть инициализированы (строки, варианты,Вариантные массивы или записи, содержащие такие типы.) Когда S является динамическим массивом типов, которые должны быть инициализированы, вновь выделенное пространство устанавливается на 0
или nil
. "
По моим наблюдениям, для статического массива неинициализированные элементы содержат случайные данные.Для динамического массива, AFAIK начиная с Delphi 7, неинициализированные элементы содержат свое значение по умолчанию ничто .Однако вы не должны полагаться на этот факт, потому что это была деталь реализации SetLength
.Вместо этого вы должны следовать официальной документации.