Ställer är ok, arrayer är bra.
Anta att vi vill skapa tre endimensionella matriser för 50 medlemmar i vårt programmeringsgemenskap. Den första matrisen är för namn, den andra för e-post och den tredje för antalet uppladdningar (komponenter eller applikationer) till vår community.
Varje matris (lista) skulle ha matchande index och massor av kod för att upprätthålla alla tre listorna parallellt. Naturligtvis skulle vi kunna prova med en tredimensionell matris, men vad sägs om dess typ? Vi behöver sträng för namn och e-post, men ett heltal för antalet överföringar.
Sättet att arbeta med en sådan datastruktur är att använda Delphis poststruktur.
TMember = Spela in...
Till exempel skapar följande deklaration en posttyp som heter TMember, den som vi kan använda i vårt fall.
I huvudsak, a inspelad datastruktur kan blanda vilken som helst av Delphis inbyggda typer inklusive alla typer du har skapat. Record typer definierar fasta samlingar av objekt av olika typer. Varje artikel, eller fält, är som en variabel, bestående av ett namn och en typ.
TMember-typen innehåller tre fält: ett strängvärde som heter Namn (för att hålla namnet på en medlem), ett värde för en strängtyp kallas e-post (för en e-post) och ett heltal (kardinal) som heter inlägg (för att hålla antalet inlämningar till vår gemenskap).
När vi har satt upp posttypen kan vi förklara att en variabel är av typen TMember. TMember är nu lika bra variabeltyp för variabler som någon av Delphi's inbyggda typer som sträng eller heltal. Obs: TMember-typdeklarationen tilldelar inget minne för fälten Namn, e-post och inlägg;
För att faktiskt skapa en förekomst av TMember-posten måste vi förklara en variabel av typen TMember, som i följande kod:
När vi har en post använder vi en punkt för att isolera fälten i DelphiGuide.
Obs: ovanstående kod kan skrivas om med hjälp av mednyckelord.
Vi kan nu kopiera värdena på DelphiGuides fält till AMember.
Spela in omfattning och synlighet
Posttyp som deklareras i deklarationen av ett formulär (implementeringsavsnitt), funktion eller förfarande har ett räckvidd begränsat till det block i vilket det deklareras. Om posten deklareras i gränssnittet i en enhet har den ett omfattning som inkluderar andra enheter eller program som använder enheten där deklarationen inträffar.
En uppsättning rekord
Eftersom TMember fungerar som alla andra Objekt Pascal-typer, kan vi förklara en rad rekordvariabler:
Obs: Så här gör du förklara och initiera ett konstant utbud av poster i Delphi.
Spelar in som postfält
Eftersom en inspelningstyp är legitim som någon annan Delphi-typ, kan vi ha ett fält av en post som en skiva själv. Vi kan till exempel skapa ExpandedMember för att hålla reda på vad medlemmen skickar tillsammans med medlemsinformationen.
Att fylla i all information som behövs för en enda post är nu på något sätt svårare. Fler perioder (prickar) krävs för att få åtkomst till fälten i TExpandedMember.
Spela in med "okända" fält
En posttyp kan ha en variantdel (inte att förväxla med variabeltypvarianten). Variantposter används till exempel när vi vill skapa en posttyp som har fält för olika typer av data, men vi vet att vi aldrig kommer att behöva använda alla fälten i en enda post exempel. För att lära dig mer om variantdelar i poster, titta på Delphis hjälpfiler. Användningen av en variant skivtyp är inte typsäker och är inte en rekommenderad programmeringspraxis, särskilt för nybörjare.
Men variantposter kan vara ganska användbara om du någonsin befinner dig i en situation att använda dem.