Delfų programavimo kalba yra labai įvestos kalbos pavyzdys. Tai reiškia, kad visi kintamieji turi būti tam tikro tipo. Tipas iš esmės yra tam tikros rūšies duomenų pavadinimas. Kai deklaruojame kintamąjį, turime nurodyti jo tipą, kuris lemia reikšmių rinkinį, kurį kintamasis gali išlaikyti, ir operacijas, kurias galima atlikti su juo.
Daugelis „Delphi“ įmontuotų duomenų tipų, tokie kaip sveikasis skaičius arba Stygos, gali būti patobulintos arba sujungtos, kad būtų sukurti nauji duomenų tipai. Šiame straipsnyje pamatysime, kaip sukurti pasirinktinius įprastinių duomenų tipus Delfi.
Paprastieji tipai
Apibrėžiančios eilinių duomenų tipų charakteristikos yra šios: jas turi sudaryti ribotas skaičius elementų ir jos turi būti tam tikru būdu išdėstytos.
Dažniausi eilinių duomenų tipų pavyzdžiai yra visi sveikieji skaičiai, taip pat Char ir Būlio tipo. Tiksliau tariant, „Object Pascal“ turi 12 iš anksto apibrėžtų eilės tipų: sveikasis skaičius, trumpasis, mažasis, ilgasis, baitinis, žodinis, kardinalusis, loginis, „ByteBool“, „WordBool“, „LongBool“ ir „Char“. Taip pat yra dar dvi vartotojo apibrėžtų eilinių tipų klasės: išvardyti tipai ir subrange tipai.
Bet kokio tipo eilutėse turi būti prasminga judėti pirmyn arba atgal į kitą elementą. Pavyzdžiui, tikrieji tipai nėra įprasti, nes judėti pirmyn ar atgal nėra prasmės. Klausimas "kokia yra kita tikrovė po 2,5?" yra beprasmis.
Kadangi pagal apibrėžimą kiekviena reikšmė, išskyrus pirmąją, turi unikalų pirmtaką, o kiekviena reikšmė, išskyrus paskutinę, turi unikalų įpėdinį, keli iš anksto nustatyti funkcijos yra naudojami dirbant su eilės tipais:
Funkcija | Poveikis |
Ordas (X) | Pateikia elemento rodyklę |
Pred (X) | Pereina prie elemento, nurodyto prieš X tipo |
Succ (X) | Pereina prie elemento, nurodyto po X tipo |
Gruodis (X; n) | N elementą perkelia atgal (jei n praleistas, perkelia 1 elementą atgal) |
Inc (X; n) | Perkelia n elementą į priekį (jei n praleistas, 1 elementas juda į priekį) |
Žemas (X) | Gauna mažiausią reikšmę X eilinių duomenų tipo diapazone |
Aukštas (X) | Gauna aukščiausią reikšmę X eilinių duomenų tipo diapazone |
Pavyzdžiui, aukštas (baitas) grąžina 255, nes didžiausia baito tipo vertė yra 255, o „Succ“ (2) grąžina 3, nes 3 yra 2 įpėdinis.
Pastaba: Jei bandysime naudoti „Succ“, paskutiniame elemente „Delphi“ sukurs a vykdymo laiko išimtis jei įjungtas diapazono tikrinimas.
Delphi išvardytas tipas
Lengviausias būdas sukurti naują ordinarinio tipo pavyzdį yra tiesiog išvardyti pluoštą elementų tam tikra tvarka. Šios vertės neturi įgimtos reikšmės, o jų tvarkingumas seka seka, kurioje išvardyti identifikatoriai. Kitaip tariant, sąrašas yra vertybių sąrašas.
tipo TWeekDays = (pirmadienis, antradienis, trečiadienis, ketvirtadienis, penktadienis, šeštadienis, sekmadienis);
Apibrėžę išvardytą duomenų tipą, galime paskelbti, kad tokio tipo kintamieji yra:
var „SomeDay“: „TWeekDays“;
Pagrindinis surašyto duomenų tipo tikslas yra paaiškinti, kokie duomenys yra jūsų programa manipuliuos. Išvardytas tipas iš tikrųjų yra tik sutrumpintas būdas nuoseklias reikšmes priskirti konstantoms. Atsižvelgiant į šias deklaracijas, antradienis yra tipo konstanta „TWeekDays“.
„Delphi“ leidžia mums dirbti su išvardytais elementais, naudojant rodyklę pagal eiliškumą, kurioje jie buvo išvardyti. Ankstesniame pavyzdyje pirmadienis „TWeekDays“ tipo deklaracija turi indeksą 0, antradienis - indeksą 1 ir pan. Anksčiau pateiktoje lentelėje išvardytos funkcijos, pavyzdžiui, „Succ“ (penktadienis) „eina“ į šeštadienį.
Dabar galime išbandyti ką nors panašaus:
dėl „SomeDay“: = pirmadienis į Sekmadienis darytijei SomeDay = antradienis tada „ShowMessage“ („Antradienis yra!“);
„Delphi“ vaizdinių komponentų biblioteka daugelyje vietų naudoja išvardytus tipus. Pavyzdžiui, formos padėtis apibrėžiama taip:
TP pozicija = („poDesigned“, „poDefault“, „poDefaultPosOnly“, „poDefaultSizeOnly“, „poScreenCenter“);
Mes naudojame poziciją (per objektų inspektorių), kad gautume arba nustatytume forma.
Subordinuoti tipai
Paprasčiau tariant, subrange tipas žymi kito eilės tipo verčių pogrupį. Apskritai, bet kurį subrangą galime apibrėžti, pradedant bet kokiu eilės tipu (įskaitant anksčiau apibrėžtą išvardytą tipą) ir naudojant dvigubą tašką:
tipo TWorkDays = Pirmadienis.. Penktadienis;
Čia „TWorkDays“ apima pirmadienio, antradienio, trečiadienio, ketvirtadienio ir penktadienio vertes.
Štai viskas - dabar eik išvardyti!