Мне было любопытно, как долго может быть динамический массив, поэтому я попытался
SetLength(dynArray, High(Int64));
Это имеет значение 9,223,372,036,854,775,807, и я полагаю, что это будет наибольшее число индексов, на которые я мог бы ссылаться в любом случае. Это дало мне:
ERangeError с сообщением «Ошибка проверки диапазона».
Итак, я попробовал:
SetLength(dynArray, MaxInt);
и получил ту же ошибку!
Интересно, я мог бы назвать это с
SetLength(dynArray, Trunc(Power(2, 32));
Что на самом деле в два раза больше MaxInt!
Я пытался
SetLength(dynArray, Trunc(Power(2, 63) - 1));
То же самое, что и High (Int64), и это тоже не удалось.
Если не считать продолжения проб и ошибок, кто-нибудь знает максимальный размер? Зависит ли это от размера элементов в массиве?
Я использую Delphi 2009. Будет ли он отличаться для разных версий (очевидно, когда выйдет Commadore, он должен быть больше!)