Lehetséges, hogy távolítsa el a dinamikus tömb elem

Lehet törölni egy eleme a dinamikus tömb?

De az eredmény a másolat nem tud csatlakozni egy meglévő tömb, mint ami egy új tömböt, kezdve az 1., a másolt elem :(.

Nem értem. Abszolút.
Mi van szükség, és miért nem
MyArray [n]: = myArray [Magas (myArray)];
SelLength (myArray, Magas (myArray));
?

Sagrer # XA0; (05.07.05 17:42)

2 Sagrer # XA0; (05.07.05 17:42)
Röviden, hogy TList és nem par agya 8)

Uh-uh. és milyen módon?

Ha alkalmazzuk elemenként feladat, referencia száma az utolsó előtti elem nagyobb van (ez növekedni fog, ha hozzá), és ez a helyzet nem merül fel.

Itt egy egyszerű példa, amely megerősíti, [3] és [6]:

var
# XA0; A: tömb string;

eljárás TForm1.Button2Click (Sender: TObject);
kezdődik
# XA0; ShowMessage (A [8])
végén.

Hatékony első véglegesíti a bejegyzést el kell távolítani (közvetlenül vagy közvetve), majd másolja a memória egy darab (mi - válaszd ki, ízlés szerint), majd nullázza az utolsó elem, és így ezt követően SetLength.

És azok, akik nem rendelkeznek kézzel kell eltávolítani véglegesíteni?

> REA # XA0; (06.07.05 10:38) [11]


> És az egyik, hogy nem kell kézzel kell eltávolítani véglegesíteni?

Ezek jól reagált a [9]:

> Először véglegesíteni eltávolítható elem (közvetlenül vagy közvetve)

Mégis, kérjük, fejtse ki, hogy miért tárolására objektumok száma, ami gyakran változik (elemek hozzáadott és eltávolított) nem használja TList helyett egy tömböt, és gépelt mutatók.

Amikor kicsi TList tárgyat kap hatástalan, mivel az egyes tételek, amire szükség van a memóriát, hogy van egy extra kihívást jelent a memória menedzser, és a multi-threading is benne van az nem rögzül.
Részleges kijárat lehet egy memória menedzser, de aztán tárgyak NewInstance blokkolni kell.

És én a saját tömbök ez az üzlet. Tény, hogy ez a kombináció, és hogy a másik. Lásd tömbök a honlapomon. Ugyanakkor vannak olyan bázis osztályok tömbök beépített indexelő (gyors keresés) és válogatás, de eljut nem szabad - a tömb elem mérete növekszik.

Azonban, ha a tárgy, például egy több rekordok bukmarok típusa (például a felhasználó által kiválasztott tárolására adatbázisba bejegyzés jelenik meg a rács), olvassa az adatbázisból, majd, IMHO, könnyen használható, mégis TList. Nem utolsósorban azért, mert lehetővé teszi, hogy tárolja egy hivatkozás a komplex tartály tárgyak (pl, nyilvántartások). Még számos ilyen „jelek”, IMHO, nem lassítja a programot, de a kód zdelaet érthető és átlátható. Igen, és egyfajta felsorolja könnyebb, mint a tömbök (üt, ha ez a baj)

Csak ugyanez a helyzet a rekord könnyebben nem használja TList, mert kifejezetten kiosztani-mentesíteni minden egyes eleme. Itt az objektumok lehet részben automatizálható a felszabadulás útján TObjectList.

Kezdjük elkülöníteni legyeket szelet.
TList osztályú objektumok és listák - nagyon különböző dolog. Nem kell, hogy hívja őket így, ez zavart kelt.

Ha felvesz egy bizonyos tárgy a másikra TList, van:
1. Egy GetMem kezelés memóriafoglalási hogy ugyanazt a tárgyat.
2. igénybevétele a memória a vezetője a TList, amikor noy Méret

Abban az esetben, a tömb, már csak az utóbbi. De sajnos (vagy szerencsére) Delphi nem lehet létrehozni egy objektumot a tömbben, mind az úgynevezett tömbök tárgyak valójában tömbök Objektumvonatkoztatások. Ennek eredményeként, ezek a tömbök objektumok nem különbözik szinte TList / TObjectList.
Ami a memóriát hozzáfér az igazgató a különbség objektumok és tömbök TList / TObjectList gyakorlatilag nincs. De tömbök rögzíti az eltérés jelentős, mert A felvétel tényleges helye a tömbben. Ennek az az előnye, vagy hátrány? Keresek valami. Törlés, természetesen, a rosszabb - több másolat (általában). Add az azonos gyorsabb lehet, de egészen nem haladja meg a kapacitás, akkor szükség van ismét másolni tovább. Azt is meg kell szem előtt tartani, hogy az ár a memória-hozzáférés manager különbözik egyszálú és többszálú alkalmazások.

Látták ochepyatki:
Érheti a memória a vezetője TList, amikor noy MéretÉrheti a memória a vezetője TList, amikor az új méret> Kapacitás.

törölt moderátor
Megjegyzés: Tegye fel kérdését a fióktelep

Click a Ctrl for M M [X], és hogy ez a DynArray? Akkor is, kattintson DynArray, és hogy ez tényleg a tömb egész? Meglátod, mi a téma, és világos.

Hozza létre saját témát és a kérdés ott.

Kapcsolódó cikkek