Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Pascal

Создание больших массивов
В 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]);
Категория: Pascal | Добавил: DelphiAiX (09.05.2012)
Просмотров: 584 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]