Delphi omad programmeerimiskeel on näide tugevalt trükitud keelest. See tähendab, et kõik muutujad peavad olema teatud tüüpi. Tüüp on sisuliselt teatud tüüpi andmete nimi. Muutuja deklareerimisel peame täpsustama selle tüübi, mis määrab muutuja väärtuste kogumi ja sellega tehtavad toimingud.
Paljud Delphi sisseehitatud andmetüübid, näiteks Integer või Keel, saab täpsustada või kombineerida, et luua uusi andmetüüpe. Selles artiklis näeme, kuidas luua kohandatud tavalisi andmetüüpe Delphi.
Tavalised tüübid
Järjestikuste andmetüüpide määratlevad omadused on järgmised: need peavad koosnema piiratud arvust elementidest ja neid tuleb mingil viisil järjestada.
Tavalisemate andmetüüpide levinumad näited on kõik täisarvud, Char ja Boolean tüüp. Täpsemalt, Object Pascalil on 12 etteantud tüüptüüpi: täisarv, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool ja Char. Samuti on veel kaks kasutajate määratletud tüüptüüpide klassi: loendatud tüübid ja alamtüübid.
Mis tahes ordinaalse tüübi korral peab olema mõttekas liikuda edasi või tagasi järgmise elemendi juurde. Näiteks pole päris tüübid tavalised, sest tagasi või edasi liikuda pole mõtet. Küsimus "Mis on järgmine päris pärast 2.5?" on mõttetu.
Kuna definitsiooni järgi on igal väärtusel, välja arvatud esimene, kordumatu eelkäija ja igal väärtusel, välja arvatud viimane, on kordumatu järeltulija, mitu eelnevalt määratletud funktsioonid kasutatakse tavaliste tüüpidega töötamisel:
Funktsioon | Efekt |
Ord (X) | Annab elemendi indeksi |
Eeldatud (X) | Läheb elemendis X loetletud elemendi juurde |
Succ (X) | Läheb elemendis X-i järel loetletud elemendi juurde |
Detsember (X; n) | Liigutab n elementi tagasi (kui n jäetakse välja, liigub 1 element tagasi) |
Inc (X; n) | Liigutab n elementi edasi (kui n jäetakse välja, liigub 1 element edasi) |
Madal (X) | Tagastab madalaima väärtuse tavalise andmetüübi X vahemikus |
Kõrge (X) | Tagastab kõrgeima väärtuse tavalise andmetüübi X vahemikus |
Näiteks, High (Byte) tagastab 255, kuna tüübi Byte suurim väärtus on 255, ja Succ (2) tagastab 3, kuna 3 on 2 järglane.
Märkus. Kui proovime kasutada Succi, genereerib Delphi viimase elemendina a käitusaja erand kui vahemiku kontroll on sisse lülitatud.
Delphi loendatud tüüp
Lihtsaim viis ordinaaltüübi uue näite loomiseks on lihtsalt elementide hunniku loetlemine mingis järjekorras. Väärtustel puudub loomupärane tähendus ja nende korrapärasus järgib identifikaatorite loetlemise järjekorda. Teisisõnu, loend on väärtuste loetelu.
tüüp TWeekDays = (esmaspäev, teisipäev, kolmapäev, neljapäev, reede, laupäev, pühapäev);
Kui oleme loendatud andmetüübi määratlenud, võime muutujad seda tüüpi kuulutada:
var SomeDay: TWeekDays;
Loetletud andmetüübi peamine eesmärk on selgitada, millised andmed teie programmi hakkavad manipuleerima. Loetletud tüüp on tegelikult ainult lühike viis järjestikuste väärtuste määramiseks konstantidele. Neid avaldusi arvestades on teisipäev tüüpkonstant TWeekDays.
Delphi võimaldab meil töötada elementidega loenditüübis, kasutades indeksit, mis pärineb järjekorrast, milles need loetleti. Eelmises näites oli esmaspäev TWeekDays tüübideklaratsioonil on indeks 0, teisipäeval on indeks 1 jne. Eelmises tabelis loetletud funktsioonid võimaldavad meil näiteks laupäeva "minekuks" kasutada Succ'i (reedel).
Nüüd saame proovida midagi sellist:
jaoks SomeDay: = Esmaspäev kuni Pühapäeval tehakui SomeDay = teisipäev siis ShowMessage ('Teisipäev on!');
Delphi visuaalsete komponentide raamatukogu kasutab mitmel pool loendatud tüüpe. Näiteks vormi vorm määratletakse järgmiselt:
TPpositsioon = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);
Objekti suuruse ja paigutuse saamiseks või seadistamiseks kasutame positsiooni (läbi Objektiinspektori) vorm.
Alamtüübid
Lihtsamalt öeldes tähistab alamtüüp väärtuste alamhulka teises ordinaarses tüübis. Üldiselt saame määratleda mis tahes alamjärjestuse, alustades suvalisest tüübist (sealhulgas eelnevalt määratletud loendatud tüübist) ja kasutades kahekordset punkti:
tüüp TWorkDays = Esmaspäev.. Reede;
Siin sisaldab TWorkDays väärtusi esmaspäev, teisipäev, kolmapäev, neljapäev ja reede.
See on kõik - mine nüüd loetle!