Mi a csomagolt tömb és a csomagolt rekord?

Csomagolt tömb és csomagolt rekord.

Oh. Bocsánat. Nem láttam a tanúsítványt. Ez megtörténik!
De mindazonáltal megmondom: csomagolt tömbre csak akkor lehet szükség, ha olyan struktúrákat tárol, amelyek nem 4 bájt többszörösek?

Kb. 4 bájtot nem tudok mondani. Jobb, IMHO, minden olyan struktúrával, amely kifejezetten megadja a csomagolást abban az esetben, ha egyértelművé válik, hogy a méretek függetlenek legyenek bármilyen igazításoktól.

Csak biztosnak kell lennie
nem boldog. akkor csomagoljuk

csak egy kicsi, de - ahol - látta, hogy nem javasolják a csomagolás használatát - ez csökkentheti a teljesítményt, mivel mind a 32 processzor kapacitása, és ha a 16-24-es verzióban próbál valamit használni, nagy hatással lesz rá. Általánosságban elmondható, hogy néhány szakember általában optimálisan 32 bitre dolgozik, és nagyon lassú más típusokkal.

A tömörített tömböt illetően: mindig azt éreztem, hogy a Delphi tömbök mindig be vannak csomagolva. Itt van egy darab, elküldve a D3-nak és a D6-nak, megerősítette: két ötöt ad ki. Bár mint a Delphi.Net-ben - nem tudom.


var
a: array [1..5] byte;
b: csomagolt tömb [1..5] byte;
inicializálás
ShowMessage (IntToStr (sizeof (a)) + "" + IntToStr (sizeof (b)));
végén.

Ha az Igazított rekordmezők opció be van kapcsolva, a hiányzó rekordok mérete tele van. egy 32 bites határvonalhoz igazodik (4-es többszörösek). Ha csomagolt, akkor a méretek változatlanok maradnak.

A: becsomagolt rekord
# xA0; ID: egész;
# xA0; Számláló: szó;
végén;

A méret 6 bájt, függetlenül a beállítástól. Ha eltávolítod a csomagot. akkor a méret 8 bájt lesz.

Ha kikapcsolja az opciót, a csomagolás jelenléte egyáltalán nem szükséges.

Ugyanez vonatkozik a tömbökre is.

AFAIK, ez az opció nem be / ki, hanem 1-2-4-8.

> Ugyanez vonatkozik a tömbökre is.
Nagy kérés, hogy ezt példával szemlélje.

Már próbáltam - ugyanazt. Igaz, volt egy tömb [] rekord, és a rekordban volt szó és bájt.

végrehajtás

típus
t5 = becsomagolt rekord
# xA0; b0, b1, b2, b3, b4: byte;
végén;
a = t5 tömb [1..5];
b = t5 tömörített tömb [1..5];
inicializálás
ShowMessage (IntToStr (Sizeof (a)) + "" + IntToStr (méret (b)));

2 GuAV: Mit értesz ez alatt? Az igazítás csak ez a projekt opciótól függ ($ A + vagy $ ALIGN ON a szövegben).

Az $ A irányelv irányítja a mezők igazítását a Delphi rekordtípusokban és osztálystruktúrákban.
A vagy az állapotban a mezők soha nem igazodnak. Minden nyilvántartás és osztály struktúrája tele van.
Az állapotban a rekordtípusok mezői.
Az állapotban a rekordtípusok mezői, amelyeket a csomagolt módosító és az osztály mezők nélkül deklarálnak, a kétszavas határokon igazodnak.

Az vagy az állapotban a rekordtípusok mezői, amelyeket a csomagolt módosító és az osztály mezők nélkül deklarálnak.

Az Integer típusok segítségével
az alsó lemezben - az állandó méretű alapfajta, a felső generikus # xA0; - Integer és Cardinal, a jelenlegi hardverplatformra hivatkozva.
Itt van az Integer (a 16 bites korban) például egy két bájtos.