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 подходящ за тази задача, при условие че масивът не е прекалено голям (
Свързани статии