Sets zijn ok, arrays zijn geweldig.
Stel dat we drie eendimensionale arrays willen maken voor 50 leden in onze programmeergemeenschap. De eerste array is voor namen, de tweede voor e-mails en de derde voor het aantal uploads (componenten of applicaties) naar onze community.
Elke array (lijst) zou overeenkomende indexen en voldoende code hebben om alle drie de lijsten parallel te houden. Natuurlijk kunnen we het proberen met één driedimensionale array, maar hoe zit het met het type? We hebben een string nodig voor namen en e-mails, maar een geheel getal voor het aantal uploads.
De manier om met een dergelijke gegevensstructuur te werken, is door Delphi's te gebruiken recordstructuur.
De volgende verklaring maakt bijvoorbeeld een recordtype met de naam TMember, degene die we in ons geval kunnen gebruiken.
In wezen een record datastructuur kan elk van de ingebouwde types van Delphi combineren inclusief alle typen die u hebt gemaakt. Recordtypen definiëren vaste verzamelingen van items van verschillende types. Elk item, of veld-, is als een variabele, bestaande uit een naam en een type.
TMember-type bevat drie velden: een tekenreekswaarde met de naam Naam (om de naam van een lid te bevatten), een waarde van een tekenreekstype met de naam eMail (voor één e-mail) en een geheel getal (kardinaal) genaamd Berichten (om het nummer te bevatten) van inzendingen naar onze community).
Nadat we het recordtype hebben ingesteld, kunnen we een variabele declareren van het type TMember. TMember is nu net zo goed variabeletype voor variabelen als elk van de ingebouwde typen van Delphi zoals String of Integer. Opmerking: de TMember-type-aangifte kent geen geheugen toe voor de velden Naam, E-mail en Berichten;
Om daadwerkelijk een instantie van TMember-record te maken, moeten we een variabele van het TMember-type declareren, zoals in de volgende code:
Als we nu een record hebben, gebruiken we een punt om de velden van DelphiGuide te isoleren.
Opmerking: het bovenstaande stukje code kan worden herschreven met het gebruik van met trefwoord.
We kunnen nu de waarden van de velden van DelphiGuide naar AMember kopiëren.
Recordtype gedeclareerd in de aangifte van een formulier (implementatiesectie), functie of procedure heeft een bereik dat beperkt is tot het blok waarin het wordt gedeclareerd. Als het record wordt gedeclareerd in het interface-gedeelte van een eenheid, heeft het een bereik dat andere eenheden of programma's omvat die de eenheid gebruiken waar de aangifte plaatsvindt.
Omdat TMember werkt als elk ander type Object Pascal, kunnen we een reeks recordvariabelen declareren:
Opmerking: Hier ziet u hoe u een constante reeks records in Delphi declareert en initialiseert.