Delphis programmeringssprog er et eksempel på et stærkt typisk sprog. Dette betyder, at alle variabler skal være af en eller anden type. En type er hovedsageligt et navn på en slags data. Når vi erklærer en variabel, skal vi specificere dens type, der bestemmer det sæt værdier, variablen kan indeholde, og de operationer, der kan udføres på den.
Mange af Delphis indbyggede datatyper, såsom heltal eller Snor, kan forbedres eller kombineres for at oprette nye datatyper. I denne artikel ser vi, hvordan man opretter tilpassede ordinære datatyper i Delphi.
Almindelige typer
De definerende karakteristika for ordinære datatyper er: de skal bestå af et begrænset antal elementer, og de skal bestilles på en eller anden måde.
De mest almindelige eksempler på ordinære datatyper er alle heltalstyper samt char og Boolean type. Mere præcist har Object Pascal 12 foruddefinerede ordinatyper: Heltal, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool og Char. Der er også to andre klasser af brugerdefinerede ordinartyper: optællede typer og subrange-typer.
I alle ordinære typer skal det være fornuftigt at bevæge sig bagud eller fremad til det næste element. For eksempel er reelle typer ikke ordinære, fordi det ikke er fornuftigt at bevæge sig bagud eller fremad. Spørgsmålet "Hvad er det næste virkelige efter 2,5?" er meningsløs.
Da hver værdi undtagen den første per definition har en unik forgænger, og hver værdi undtagen den sidste har en unik efterfølger, flere foruddefinerede funktioner bruges, når man arbejder med ordinære typer:
Fungere | Effekt |
Ord (X) | Angiver indeks for elementet |
Pred (X) | Går til det element, der er anført før X i typen |
Succ (X) | Går til det element, der er anført efter X i typen |
Dec (X; n) | Flytter n elementer tilbage (hvis n er udeladt bevæger 1 element tilbage) |
Inc (X; n) | Flytter n elementer fremad (hvis n er udeladt bevæger 1 element sig fremad) |
Lav (X) | Returnerer den laveste værdi i området for den almindelige datatype X |
Høj (X) | Returnerer den højeste værdi i området for den ordinære datatype X |
For eksempel returnerer High (Byte) 255, fordi den højeste værdi af typen Byte er 255, og Succ (2) returnerer 3, fordi 3 er efterfølgeren til 2.
Bemærk: Hvis vi forsøger at bruge Succ, når Delphi ved det sidste element genererer en run-time undtagelse hvis kontrolområdet er slået til.
Delphi enumerated Type
Den nemmeste måde at oprette et nyt eksempel på en ordinal type er simpelthen at liste en masse elementer i en eller anden rækkefølge. Værdierne har ingen iboende betydning, og deres ordinality følger den sekvens, hvor identifikatorerne er anført. Med andre ord er en optælling en liste over værdier.
type TWeekDays = (Mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag);
Når vi først har defineret en opregnet datatype, kan vi erklære variabler til at være af den type:
Var SomeDay: TWeekDays;
Det primære formål med en opregnet datatype er at gøre det klart, hvilke data du har program vil manipulere. En opregnet type er virkelig bare en kortvarig måde at tildele sekventielle værdier til konstanter på. I betragtning af disse erklæringer er tirsdag en konstant type TWeekDays.
Delphi giver os mulighed for at arbejde med elementerne i en opregnet type ved hjælp af et indeks, der kommer fra den rækkefølge, de blev opført i. I det foregående eksempel, mandag i TWeekDays typedeklaration har indekset 0, tirsdag har indekset 1 osv. De funktioner, der er anført i tabellen før, lad os f.eks. Bruge Succ (fredag) til at "gå til" lørdag.
Nu kan vi prøve noget som:
til SomeDay: = Mandag til Søndag gørehvis SomeDay = Tirsdag derefter ShowMessage ('Tirsdag er det!');
Delphi Visual Component Library bruger talrige typer mange steder. F.eks. Er positionen af en form defineret som følger:
TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);
Vi bruger Position (gennem Objektinspektøren) til at få eller indstille størrelsen og placeringen af form.
Subrange typer
Kort sagt repræsenterer en subrange-type en undergruppe af værdierne i en anden ordinær type. Generelt kan vi definere enhver subrange ved at starte med en hvilken som helst ordinal type (inklusive en tidligere defineret opregnet type) og bruge en dobbeltprik:
type TWorkDays = Mandag.. Fredag;
Her inkluderer TWorkDays værdierne mandag, tirsdag, onsdag, torsdag og fredag.
Det er alt - vælg nu!