В 16-битной версии Delphi нельзя сделать это непосредственно. В
новой, 32-битной версии, это как-то можно сделать, но за два месяца колупания я
так и не понял как. (Некоторые бета-тестеры знают как. Не могли бы они сообщить
нам всю подноготную этого дела?)
В 16-битной версии Delphi вам необходимо работать с блоками по 32K или 64K и
картой. Вы могли бы сделать приблизительно следующее:
type
chunk: array[0..32767] of byte;
pchunk: ^chunk;
var
BigArray: array[0..31] of pChunk;
Для создания массива:
for i := 0 to high(bigArray) do
new(bigArray[i]);
Для получения доступа к n-ному байту в пределах массива (n должен иметь тип
longint):
bigArray[n shr 15]^[n and $7FFF] := y;
x := bigArray[n shr 15]^[n and $7fff];
Это даже осуществляет проверку выхода за границы диапазона, если вы
установили в ваших настройках опцию "range checking"!
n должен находиться в диапазоне [0..32*32*1024] = [0..1024*1024] =
[0..1048576].
Для освобождения массива после его использования необходимо сделать
следующее:
for i := 0 to high(bigArray) do
dispose (bigArray[i]);
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Создание больших массивов", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!