Forstå og bruke postdatatyper i Delphi

Settene er ok, arrays Er bra.

Anta at vi ønsker å lage tre endimensjonale matriser for 50 medlemmer i vårt programmeringssamfunn. Den første matrisen er for navn, den andre for e-post, og den tredje for antall opplastinger (komponenter eller applikasjoner) til samfunnet vårt.

Hver gruppe (liste) vil ha samsvarende indekser og rikelig med kode for å opprettholde alle tre listene parallelt. Selvfølgelig kunne vi prøve med en tredimensjonal matrise, men hva med typen? Vi trenger streng for navn og e-post, men et helt tall for antall opplastinger.

Måten å jobbe med en slik datastruktur er å bruke Delphi poststruktur.

TMember = Record...

For eksempel oppretter følgende erklæring en posttype kalt TMember, den vi kunne bruke i vårt tilfelle.

I hovedsak, a postdatastruktur kan blande hvilken som helst av Delphis innebygde typer inkludert alle typer du har opprettet. Record typer definerer faste samlinger av elementer av forskjellige typer. Hver vare, eller felt, er som en variabel, bestående av et navn og en type.

instagram viewer

TMember-typen inneholder tre felt: en strengverdi kalt Navn (for å holde navnet på et medlem), en verdi av en strengtype kalt e-post (for en e-post), og et helt tall (kardinal) kalt innlegg (for å holde antall innsendinger til vår samfunnet).

Når vi har satt opp posttypen, kan vi erklære en variabel til å være av typen TMember. TMember er nå like god variabeltype for variabler som noen av Delphi's innebygde typer som streng eller heltall. Merk: TMember-typedeklarasjonen tildeler ikke noe minne for navnene, e-postmeldingene og innleggene;

For å opprette en forekomst av TMember-posten, må vi erklære en variabel av typen TMember, som i følgende kode:

Når vi nå har en post, bruker vi en prikk for å isolere feltene til DelphiGuide.

Merk: ovennevnte stykke kode kan skrives om ved bruk av medsøkeord.

Vi kan nå kopiere verdiene til DelphiGuides felt til AMember.

Registrer omfang og synlighet

Posttype som er erklært innenfor erklæringen av et skjema (implementeringsseksjon), funksjon eller prosedyre har et omfang som er begrenset til blokken der det er erklært. Hvis posten er deklarert i grensesnittdelen av en enhet, har den et omfang som inkluderer andre enheter eller programmer som bruker enheten der deklarasjonen skjer.

En rekke poster

Siden TMember fungerer som enhver annen Object Pascal-type, kan vi erklære en rekke opptaksvariabler:

Merk: Slik gjør du det erklære og initialisere et konstant utvalg av poster i Delphi.

Registrerer som postfelt

Siden en platetype er legitim som enhver annen Delphi-type, kan vi ha et felt med en plate som en plate i seg selv. Vi kan for eksempel lage ExpandedMember for å holde oversikt over hva medlemmet sender sammen med medlemsinformasjonen.

Det er nå vanskeligere å fylle ut all informasjonen som trengs for en enkelt post. Flere perioder (prikker) kreves for å få tilgang til feltene i TExpandedMember.

Record med "Ukjente" felt

En posttype kan ha en variantdel (ikke å forveksle med variabeltypen Variant). Variantposter brukes for eksempel når vi ønsker å lage en posttype som har felt for forskjellige typer data, men vi vet at vi aldri vil trenge å bruke alle feltene i en enkelt post forekomst. For å lære mer om variantdeler i poster, kan du se på Delphis hjelpefiler. Bruken av en variant platetype er ikke typesikker og er ikke en anbefalt programmeringspraksis, spesielt for nybegynnere.

Imidlertid kan variantposter være ganske nyttige, hvis du noen gang befinner deg i en situasjon å bruke dem.

instagram story viewer