Tipuri de date ordinale și enumerate pentru Delphi

Delphi limbaj de programare este un exemplu de limbaj puternic tipat. Aceasta înseamnă că toate variabilele trebuie să fie de un anumit tip. Un tip este în esență un nume pentru un fel de date. Când declaram o variabilă, trebuie să specificăm tipul acesteia, care determină setul de valori pe care le poate deține variabila și operațiunile care pot fi efectuate pe ea.

Multe dintre tipurile de date încorporate ale Delphi, cum ar fi Integer sau Şir, poate fi rafinat sau combinat pentru a crea noi tipuri de date. În acest articol, vom vedea cum puteți crea tipuri de date ordinal personalizate Delphi.

Tipuri ordinale

Caracteristicile definitorii ale tipurilor de date ordinale sunt: ​​trebuie să constea dintr-un număr finit de elemente și trebuie să fie ordonate într-un fel.

Cele mai frecvente exemple de tipuri de date ordinale sunt toate tipurile Integer, precum și Char și boolean tip. Mai precis, Obiectul Pascal are 12 tipuri ordinale predefinite: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool și Char. Există, de asemenea, alte două clase de tipuri ordinale definite de utilizator: tipuri enumerate și tipuri de subrange.

instagram viewer

În orice tipuri ordinale, trebuie să aibă sens să vă deplasați înapoi sau înainte spre următorul element. De exemplu, tipurile reale nu sunt ordinale, deoarece mutarea înapoi sau înainte nu are sens. Întrebarea „Care este următorul real după 2,5?” nu are sens

Întrucât, prin definiție, fiecare valoare, cu excepția primei, are un predecesor unic și fiecare valoare, cu excepția ultimei, are un succesor unic, mai multe predefinite funcții sunt utilizate atunci când lucrați cu tipuri ordinale:

Funcţie Efect
Ord (X) Oferă indexul elementului
Pred (X) Merge la elementul listat înainte de X în tip
Succ (X) Merge la elementul listat după X în tip
Dec (X; n) Mutează n elemente înapoi (dacă n este omis mută 1 element înapoi)
Inc (X; n) Mută ​​n elemente înainte (dacă n este omis mută 1 element înainte)
Scăzut (X) Întoarce cea mai mică valoare din gama tipului de date ordinale X
Înalt (X) Întoarce cea mai mare valoare din gama tipului de date ordinale X


De exemplu, High (Byte) returnează 255, deoarece cea mai mare valoare a tipului Byte este 255, iar Succ (2) returnează 3, deoarece 3 este succesorul lui 2.

Notă: Dacă încercăm să folosim Succ când la ultimul element, Delphi va genera o excepție timp de rulare dacă verificarea intervalului este activată.

Tipul Enumerat Delphi

Cel mai simplu mod de a crea un nou exemplu de tip ordinal este pur și simplu să enumeri o mulțime de elemente într-o anumită ordine. Valorile nu au un sens inerent, iar ordinalitatea lor urmează secvența în care sunt enumerați identificatorii. Cu alte cuvinte, o enumerare este o listă de valori.

tip TWeekDays = (luni, marți, miercuri, joi, vineri, sâmbătă, duminică);

După ce definim un tip de date enumerat, putem declara că variabilele sunt de acel tip:

var SomeDay: TWeekDays;

Scopul principal al unui tip de date enumerat este să clarifice ce date vă sunt program va manipula. Un tip enumerat este într-adevăr doar o modalitate de atribuire a valorilor secvențiale constantelor. Având în vedere aceste declarații, marți este o constantă de tip TWeekDays.

Delphi ne permite să lucrăm cu elementele într-un tip enumerat folosind un index care provine din ordinea în care au fost listate. În exemplul precedent, luni în TWeekDays declarația de tip are indicele 0, marți are indicele 1 și așa mai departe. Funcțiile enumerate în tabel înainte de a ne permite, de exemplu, să utilizăm Succ (vineri) pentru a „merge” sâmbătă.

Acum putem încerca ceva de genul:

pentru SomeDay: = luni la duminică dodacă SomeDay = marți apoi
ShowMessage („marți este!”);

Biblioteca Delphi Visual Component utilizează tipuri enumerate în multe locuri. De exemplu, poziția unui formular este definită după cum urmează:

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

Folosim Poziția (prin intermediul inspectorului de obiecte) pentru a obține sau seta dimensiunea și plasarea formă.

Tipuri subordonate

Mai simplu spus, un tip subrange reprezintă un subset de valori într-un alt tip ordinal. În general, putem defini orice subrange începând cu orice tip ordinal (inclusiv un tip enumerat anterior definit) și folosind un punct dublu:

tip TWorkDays = luni.. Vineri;

Aici TWorkDays include valorile luni, marți, miercuri, joi și vineri.

Asta-i tot - acum mergi enumerat!