ПредишенСледващото

B ^ # 91; 3477 # 93; : = FALSE;

FreeMem # 40; B, N * sizeof # 40; булева # 41; # 41; ;

FreeMem # 40; B # 41; ;

MaxArraySize = # 40; 65520 Разделение SizeOf # 40; ElementType # 41; # 41; ;

(* 16-битова среда *)

MyArrayType = масив # 91; 1. MaxArraySize # 93; на ElementType;

ArraySizeIWant: цяло число = 1500;


След това, да се разпределят памет за масив, можете да използвате следната процедура:

ако ArraySizeIWant <= MaxArraySize then

P: = AllocMem # 40; ArraySizeIWant * SizeOf # 40; LongInt # 41; # 41; ;


Не забравяйте, че ArraySizeIWant стойност трябва да е по-малка или равна MaxArraySize.
Това е процедурата, която е с помощта на линия определя стойността на всеки член на:

за I: = 1 до ArraySizeIWant направи


Имайте предвид, че трябва да се организира извън обсега на контрол. Ако сте достатъчно памет за масив с пет елемента, и се опитват да се придаде стойност на шести, получите съобщение за грешка, а вероятно и да увреди паметта.
Не забравяйте също, че след употреба на масив от всички заделената памет трябва да се освободи. Ето един пример за това, как да се отървем от този масив:

P: = AllocMem # 40; ArraySizeIWant * SizeOf # 40; LongInt # 41; # 41; ;


По-долу е пример за динамичен масив:

SysUtils, WinTypes, WinProcs, съобщения, класове, графики,

Контроли, форми, диалози, StdCtrls;

MaxArraySize = # 40; 65520 Разделение SizeOf # 40; ElementType # 41; # 41; ;

максималния обхват, който най-вероятно може да бъде необходимо.>

TDynamicArray = масив # 91; 1. MaxArraySize # 93; на ElementType;

TForm1 = клас # 40; TForm # 41;

процедура FormCreate # 40; Подател: TObject # 41; ;

процедура Button1Click # 40; Подател: TObject # 41; ;

процедура FormDestroy # 40; Подател: TObject # 41; ;

са статични променливи се инициализират

по време на изпълнението на посочените стойности в изходния код.

Това означава, че можете да използвате напечатан

константи просто като всички останали променливи.

Удобство се инициализира автоматично стойност.>

DynamicArraySizeNeeded: цяло число = 10;

процедура TForm1. FormCreate # 40; Подател: TObject # 41; ;

и разпространява размер, просто е необходимо да съответстват на новата масив.

Ако се опитате да напишете един елемент, който излиза извън допустимия диапазон,

компилаторът не rugnetsya, но по изключение обект ви се предоставя.>

P: = AllocMem # 40; DynamicArraySizeNeeded * SizeOf # 40; цяло число # 41; # 41; ;

процедура TForm1. Button1Click # 40; Подател: TObject # 41; ;

Button1. Заглавие: = IntToStr # 40; P ^ # 91; 5 # 93; # 41; ;

процедура TForm1. FormDestroy # 40; Подател: TObject # 41; ;

FreeMem # 40; P, DynamicArraySizeNeeded * SizeOf # 40; цяло число # 41; # 41; ;

Тук "демо единица", което показва три различни начина (не всички), за да създават динамични масиви. И трите метода за разпределение на достатъчно количество памет от купчината се използва GetMem, tList използва за добавяне на елементи към списъка и масив tMemoryStream използвана за разпределяне на достатъчно памет от купчината и достъп до него от потока. Добрият стар GetMem подходящ за тази задача, при условие че масивът не е прекалено голям (

Свързани статии

Подкрепете проекта - споделете линка, благодаря!