Példák munka dinamikus tömböket, delphisite

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

FreeMem # 40; B, N * sizeof # 40; logikai # 41; # 41; ;

FreeMem # 40; B # 41; ;

MaxArraySize = # 40; 65520 div sizeof # 40; ElementType # 41; # 41; ;

(* 16-bites környezetben *)

MyArrayType = array # 91; 1. MaxArraySize # 93; A ElementType;

ArraySizeIWant: Egész 1500;


Ezután a memóriát a tömb, akkor használja a következő eljárást:

ha ArraySizeIWant <= MaxArraySize then

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


Ne felejtsük el, hogy ArraySizeIWant értéket kell kisebb vagy egyenlő MaxArraySize.
Itt az az eljárás, amely segítségével egy hurok értéket állítja be az egyes tagok:

I: = 1-től ArraySizeIWant csinálni


Ne feledje, hogy meg kell szervezni a szabályozási tartomány. Ha memóriát kiosztani tömb öt elem, és próbálja értéket rendelni a hatodik, hibaüzenetet kap, és esetleg kárt okozhat a memóriában.
Emlékezzünk arra is, hogy használata után a tömb összes memóriát kell szabadítani. Íme egy példa arra, hogyan lehet megszabadulni e tömböt:

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


Az alábbiakban egy példa egy dinamikus tömböt:

SysUtils, WinTypes, WinProcs, Üzenetek, osztályok, grafika,

Controls, Forms, Dialogs, StdCtrls;

MaxArraySize = # 40; 65520 div sizeof # 40; ElementType # 41; # 41; ;

A maximális hatótávolság, hogy akkor valószínűleg szükség.>

TDynamicArray = array # 91; 1. MaxArraySize # 93; A ElementType;

TForm1 = osztály # 40; TForm # 41;

eljárás FormCreate # 40; Sender: TObject # 41; ;

eljárás Button1Click # 40; Sender: TObject # 41; ;

eljárás FormDestroy # 40; Sender: TObject # 41; ;

a statikus változók kezdeti

A kivitelezés során a megadott értékek a forráskódot.

Ez azt jelenti, hogy tudod használni gépelt

állandók, mint bármely más változókat.

Kényelem automatikusan inicializálni értéket.>

DynamicArraySizeNeeded: Egész = 10;

eljárás TForm1. FormCreate # 40; Sender: TObject # 41; ;

és forgalmaz méret, csak szükség, hogy helyet biztosítsanak az új tömb.

Ha megpróbálja, hogy írjon egy elem, amely túlmutat a megengedett tartományon,

A fordító nem rugnetsya, hanem a kivétel objektum biztosítja Önnek.>

P: = AllocMem # 40; DynamicArraySizeNeeded * sizeof # 40; egész szám # 41; # 41; ;

eljárás TForm1. Button1Click # 40; Sender: TObject # 41; ;

Button1. Caption: = IntToStr # 40; P ^ # 91; 5 # 93; # 41; ;

eljárás TForm1. FormDestroy # 40; Sender: TObject # 41; ;

FreeMem # 40; P, DynamicArraySizeNeeded * sizeof # 40; egész szám # 41; # 41; ;

Itt az „demo egység”, mutatja három különböző módon (nem az összes), hogy dinamikus tömböket. Mindhárom módszer eloszlása ​​elegendő mennyiségű memóriát a kupac használt GetMem, tList használt elemeket hozzáadni a listához, és a tömb tMemoryStream használt elegendő memóriát a kupac, és hozzáférhet az áramot. A jó öreg GetMem alkalmasak erre a feladatra, feltéve, hogy a tömb nem túl nagy (

Kapcsolódó cikkek