Razumevanje in uporaba zapisovalnih podatkov v Delphiju

Kompleti so v redu, nizi so super.

Recimo, da želimo v naši programski skupnosti ustvariti tridimenzionalne matrike za 50 članov. Prvi niz je za imena, drugi za e-pošto in tretji za število nalogov (sestavnih delov ali aplikacij) v našo skupnost.

Vsak niz (seznam) bi imel ustrezne indekse in veliko kode za vzdrževanje vseh treh seznamov vzporedno. Seveda bi lahko poskusili z enim tridimenzionalnim nizom, kaj pa njegov tip? Potrebujemo niz za imena in e-poštna sporočila, vendar celo število za število prenosov.

Način dela s takšno strukturo podatkov je uporaba Delphijevih struktura zapisa.

TMember = Posnemi...

Naslednja deklaracija na primer ustvari vrsto zapisa, imenovano TMember, tisto, ki bi jo lahko uporabili v našem primeru.

V bistvu a Podatkovna struktura zapisov lahko meša katero koli vgrajeno vrsto Delphija vključno z vsemi vrstami, ki ste jih ustvarili. Vrste zapisov določajo fiksne zbirke predmetov različnih vrst. Vsak element oz polje, je kot spremenljivka, sestavljena iz imena in vrste.

instagram viewer

Vrsta TMember vsebuje tri polja: vrednost niza z imenom Name (za ime imena člana), vrednost vrste niza ki se imenujejo e-pošta (za eno e-pošto) in celo število (kardinal) z naslovom Objave (za shranjevanje števila prispevkov do naših skupnost).

Ko smo nastavili vrsto zapisa, lahko spremenimo spremenljivko tipa TMember. TMember je zdaj tako dobro spremenljiv tip kot spremenljivke Delphi 's vgrajenimi vrstami, kot sta String ali Integer. Opomba: Izjava tipa TMember ne dodeli pomnilnika za polja Ime, E-pošta in Objave;

Da bi ustvarili primerek zapisa TMember, moramo razglasiti spremenljivko vrste TMember, kot je navedeno v naslednji kodi:

Ko imamo zapis, uporabljamo piko, da izoliramo polja DelphiGuide.

Opomba: zgornji del kode je mogoče znova napisati z uporabo sključna beseda.

Zdaj lahko vrednosti polj DelphiGuide kopiramo v AMember.

Obseg in prepoznavnost zapisa

Vrsta zapisa, deklarirana v deklaraciji obrazca (odsek izvajanja), funkcije ali postopka, je obseg omejen na blok, v katerem je prijavljen. Če je zapis deklariran v odseku vmesnika enote, ima obseg, ki vključuje vse druge enote ali programe, ki uporabljajo enoto, kjer se deklaracija pojavi.

Niz zapisov

Ker TMember deluje kot kateri koli drug tip objektnega paskala, lahko razglasimo matriko spremenljivk zapisa:

Opomba: Tukaj je opisano razglasite in inicializirajte stalen niz zapisov v Delfih.

Zapisi kot snemalna polja

Ker je vrsta zapisa zakonita kot katera koli druga vrsta Delphija, lahko imamo polje zapisa sam zapis. Lahko bi na primer ustvarili ExpandedMember, da bi spremljali, kaj član pošilja skupaj s podatki o članu.

Izpolnjevanje vseh informacij, potrebnih za en sam zapis, je zdaj nekoliko težje. Za dostop do polj TExpandedMember je potrebnih več obdobij (pik).

Snemanje z "Neznanimi" polji

Vrsta zapisa ima lahko različico (ne sme se ga zamenjati s spremenljivko vrste Variant). Različni zapisi se uporabljajo na primer, kadar želimo ustvariti vrsto zapisa, za katerega so polja različnih vrst podatkov, vendar vemo, da nam vseh polj nikoli ne bo treba uporabiti v enem samem zapisu primera. Če želite izvedeti več o delih različice v zapisih, si oglejte Delphijeve datoteke pomoči. Uporaba variantnega zapisa ni varna za tip in ni priporočljiva programska praksa, zlasti za začetnike.

Kljub temu so različni zapisi lahko zelo koristni, če se kdaj znajdete v situaciji, da jih uporabite.