Главная страницаОбратная связьКарта сайта

Создание больших массивов

В 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 - "Создание больших массивов", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info