Înțelegerea și utilizarea tipurilor de date de înregistrare în Delphi

click fraud protection

seturi sunt ok, matrice sunt grozavi.

Să presupunem că vrem să creăm trei tablouri unidimensionale pentru 50 de membri din comunitatea noastră de programare. Primul tablou este pentru nume, al doilea pentru e-mailuri, iar al treilea pentru numărul de încărcări (componente sau aplicații) către comunitatea noastră.

Fiecare tablou (listă) ar avea indexuri potrivite și mult cod pentru a menține paralel toate cele trei liste. Desigur, am putea încerca cu un tablou tridimensional, dar ce zici de tipul său? Avem nevoie de șiruri pentru nume și e-mailuri, dar un număr întreg pentru numărul de încărcări.

Modul de a lucra cu o astfel de structură de date este de a utiliza Delphi structura de înregistrare.

TMember = Înregistrare...

De exemplu, următoarea declarație creează un tip de înregistrare numit TMember, cel pe care l-am putea folosi în cazul nostru.

În esență, a structura de înregistrare a datelor poate amesteca oricare dintre tipurile Delphi încorporate inclusiv orice tipuri pe care le-ați creat. Tipurile de înregistrare definesc colecțiile fixe de articole de diferite tipuri. Fiecare element, sau

instagram viewer
camp, este ca o variabilă, constând dintr-un nume și un tip.

Tipul TMember conține trei câmpuri: o valoare string numită Name (pentru a reține numele unui membru), o valoare a unui tip de șir numit e-mail (pentru un e-mail) și un număr întreg (cardinal) numit mesaje (pentru a reține numărul de trimiteri către comunitate).

După ce am stabilit tipul de înregistrare, putem declara o variabilă ca fiind de tip TMember. TMember este acum la fel de bun ca variabilă ca oricare dintre variabile Delphi“Sunt tipuri încorporate precum String sau Integer. Notă: declarația de tip TMember, nu alocă nicio memorie pentru câmpurile Nume, e-mail și Postări;

Pentru a crea de fapt o instanță a înregistrării TMember, trebuie să declaram o variabilă de tip TMember, ca în codul următor:

Acum, când avem o înregistrare, folosim un punct pentru a izola câmpurile DelphiGuide.

Notă: codul de mai sus ar putea fi rescris cu utilizarea de cucuvinte cheie.

Acum putem copia valorile câmpurilor DelphiGuide în AMember.

Domeniu de înregistrare și vizibilitate

Tipul de înregistrare declarat în cadrul declarației unui formular (secțiune de implementare), funcție sau procedură are un domeniu limitat la blocul în care este declarat. Dacă înregistrarea este declarată în secțiunea de interfață a unei unități, aceasta are un scop care include orice alte unități sau programe care utilizează unitatea în care are loc declarația.

Un Array of Records

Deoarece TMember acționează ca orice alt tip de obiect Pascal, putem declara o serie de variabile de înregistrare:

Notă: Iată cum se face declară și inițializează un șir constant de înregistrări în Delphi.

Înregistrări ca câmpuri de înregistrare

Deoarece un tip de înregistrare este legitim ca orice alt tip Delphi, putem avea un câmp al unei înregistrări să fie o înregistrare în sine. De exemplu, am putea crea ExpandedMember pentru a urmări ce trimite membrul împreună cu informațiile despre membru.

Completarea tuturor informațiilor necesare pentru o singură înregistrare este acum oarecum mai grea. Mai multe perioade (puncte) sunt necesare pentru a accesa câmpurile din TExpandedMember.

Înregistrare cu câmpuri „necunoscute”

Un tip de înregistrare poate avea o parte variantă (nu trebuie confundat cu variabila de tip Variant). Înregistrările variante sunt utilizate, de exemplu, atunci când dorim să creăm un tip de înregistrare care are câmpuri pentru diferite tipuri de date, dar știm că nu vom avea niciodată nevoie să folosim toate câmpurile într-o singură înregistrare instanță. Pentru a afla mai multe despre piesele de variantă din înregistrări, aruncați o privire la fișierele de ajutor ale Delphi. Utilizarea unui tip de înregistrare variantă nu este sigură de tip și nu este o practică de programare recomandată, în special pentru începători.

Cu toate acestea, înregistrările de variante pot fi destul de utile, dacă vă găsiți vreodată în situația de a le folosi.

instagram story viewer