Ordinære og oppregnet datatyper for Delphi

click fraud protection

Delphis programmeringsspråk er et eksempel på et sterkt typisk språk. Dette betyr at alle variabler må være av en eller annen type. En type er egentlig et navn på en slags data. Når vi erklærer en variabel, må vi spesifisere dens type, som bestemmer settet med verdier variabelen kan inneholde og operasjonene som kan utføres på den.

Mange av Delphis innebygde datatyper, for eksempel Integer eller string, kan foredles eller kombineres for å lage nye datatyper. I denne artikkelen får vi se hvordan du oppretter tilpassede ordinære datatyper i Delphi.

Vanlige typer

De definerende egenskapene til ordinære datatyper er: de må bestå av et begrenset antall elementer, og de må bestilles på noen måte.

De vanligste eksemplene på ordinære datatyper er alle heltallstyper samt Char and boolean type. Mer presist har Object Pascal 12 forhåndsdefinerte ordinaltyper: Heltall, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool og Char. Det er også to andre klasser av brukerdefinerte ordinaltyper: oppregnete typer og subrange-typer.

instagram viewer

I alle ordinære typer må det være fornuftig å bevege seg bakover eller fremover til neste element. For eksempel er virkelige typer ikke ordinære fordi det å gi bakover eller fremover ikke gir mening. Spørsmålet "Hva er det neste etter 2,5?" er meningsløs.

Siden per definisjon hver verdi bortsett fra den første har en unik forgjenger og hver verdi bortsett fra den siste har en unik etterfølger, flere forhåndsdefinerte funksjoner brukes når du arbeider med ordinære typer:

Funksjon Effekt
Ord (X) Gir indeksen for elementet
Pred (X) Går til elementet som er oppført før X i typen
Succ (X) Går til elementet som er oppført etter X i typen
Des (X; n) Flytter n elementer tilbake (hvis n er utelatt beveger 1 element tilbake)
Inc (X; n) Flytter n elementer fremover (hvis n er utelatt beveger 1 element fremover)
Lav (X) Returnerer den laveste verdien i området for ordinatypen X
Høy (X) Returnerer den høyeste verdien i området for den ordinære datatypen X


For eksempel returnerer High (Byte) 255 fordi den høyeste verdien av typen Byte er 255, og Succ (2) returnerer 3 fordi 3 er etterfølgeren til 2.

Merk: Hvis vi prøver å bruke Succ når på det siste elementet Delphi vil generere en kjøretids unntak hvis rekkeviddekontrollen er på.

Delphi enumerated Type

Den enkleste måten å lage et nytt eksempel på en ordinær type er ganske enkelt å liste opp en haug med elementer i en eller annen rekkefølge. Verdiene har ingen iboende betydning, og ordinærheten deres følger sekvensen som identifikatorene er listet opp i. En oppregning er med andre ord en liste over verdier.

type TWeekDays = (mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag);

Når vi har definert en oppregnet datatype, kan vi erklære variabler til å være av den typen:

Var SomeDay: TWeekDays;

Hovedformålet med en oppregnet datatype er å tydeliggjøre hvilke data du har program vil manipulere. En oppregnet type er egentlig bare en kortfattet måte å tildele sekvensielle verdier til konstanter. Gitt disse erklæringene, er tirsdag en konstant type TWeekDays.

Delphi lar oss jobbe med elementene i en oppført type ved hjelp av en indeks som kommer fra rekkefølgen de ble oppført i. I forrige eksempel, mandag i TWeekDays typedeklarasjon har indeks 0, tirsdag har indeks 1, og så videre. Funksjonene som er oppført i tabellen før, la oss for eksempel bruke Succ (fredag) for å "gå til" lørdag.

Nå kan vi prøve noe som:

til Noen dager: = mandag til søndag gjørehvis Noen dager = tirsdag deretter
ShowMessage ('tirsdag er det!');

Delphi Visual Component Library bruker mange forskjellige typer mange steder. For eksempel er posisjonen til et skjema definert som følger:

TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);

Vi bruker Posisjon (gjennom Objektinspektøren) for å få eller angi størrelsen og plasseringen av skjema.

Subrange typer

Enkelt sagt representerer en subrange-type en undergruppe av verdiene i en annen ordinær type. Generelt kan vi definere hvilken som helst subrange ved å starte med hvilken som helst ordinal type (inkludert en tidligere definert oppregnet type) og bruke en dobbel prikk:

type TWorkDays = Mandag.. Fredag;

Her inkluderer TWorkDays verdiene mandag, tirsdag, onsdag, torsdag og fredag.

Det er alt - nå tell opp!

instagram story viewer