Pořadové a vyjmenované datové typy pro Delphi

click fraud protection

Delphi je programovací jazyk je příkladem silně zadaného jazyka. To znamená, že všechny proměnné musí být nějakého typu. Typ je v podstatě název pro určitý druh dat. Když deklarujeme proměnnou, musíme specifikovat její typ, který určuje množinu hodnot, které může proměnná pojmout, a operace, které s ní lze provádět.

Mnoho vestavěných datových typů Delphi, například Integer nebo Tětiva, lze upřesnit nebo kombinovat a vytvořit nové typy dat. V tomto článku se podíváme, jak vytvořit vlastní typy dat ordinální v Delphi.

Pořadové typy

Definiční charakteristiky řadových datových typů jsou: musí se skládat z omezeného počtu prvků a musí být nějakým způsobem uspořádány.

Nejběžnějšími příklady řadových datových typů jsou všechny typy Integer, Char a Boolean typ. Přesněji řečeno, Object Pascal má 12 předdefinovaných řadových typů: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool a Char. Existují také dvě další třídy uživatelem definovaných pořadových typů: výčet typů a typy podřízených typů.

instagram viewer

U všech pořadových typů musí mít smysl postupovat dozadu nebo dopředu k dalšímu prvku. Například skutečné typy nejsou řádové, protože pohyb dozadu nebo vpřed nedává smysl. Otázka „Jaký je další skutečný po 2,5?“ nemá smysl.

Protože podle definice má každá hodnota kromě první jedinečný předchůdce a každá hodnota kromě poslední má jedinečného nástupce, několik předdefinovaných funkce se používají při práci s řadovými typy:

Funkce Účinek
Řád (X) Udává index prvku
Pred (X) Přechod na prvek uvedený před typem X
Succ (X) Přechod na prvek uvedený za typem X
Dec (X; n) Přesune n prvků zpět (pokud je n vynecháno, přesune o 1 prvek zpět)
Inc (X; n) Posune n prvků dopředu (pokud je n vynecháno, posune 1 prvek dopředu)
Nízká (X) Vrátí nejnižší hodnotu v rozsahu pořadového datového typu X
Vysoká (X) Vrací nejvyšší hodnotu v rozsahu pořadového datového typu X


Například High (Byte) vrátí 255, protože nejvyšší hodnota typu Byte je 255 a Succ (2) vrátí 3, protože 3 je nástupcem 2.

Poznámka: Pokud se pokusíme použít Succ, když na posledním prvku vygeneruje Delphi a výjimka run-time pokud je zapnutá kontrola dosahu.

Delphi Enumerated Type

Nejjednodušší způsob, jak vytvořit nový příklad pořadového typu, je jednoduše vyjmenovat spoustu prvků v určitém pořadí. Hodnoty nemají vlastní význam a jejich ordinalita následuje sled, ve kterém jsou identifikátory uvedeny. Jinými slovy, výčet je seznam hodnot.

typ TWeekDays = (pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle);

Jakmile definujeme vyjmenovaný datový typ, můžeme deklarovat proměnné takového typu:

var SomeDay: TWeekDays;

Primárním účelem vyjmenovaného datového typu je objasnit, jaká data jsou vaše program bude manipulovat. Vyjmenovaný typ je opravdu jen zkrácený způsob přiřazování sekvenčních hodnot konstantám. Vzhledem k těmto prohlášením je úterý typem konstanty TWeekDays.

Delphi nám umožňuje pracovat s prvky v enumerovaném typu pomocí indexu, který vychází z pořadí, v jakém byly uvedeny. V předchozím příkladu, v pondělí v TWeekDays deklarace typu má index 0, úterý má index 1 atd. Funkce uvedené v předchozí tabulce nám například umožňují použít „Succ (Friday)“ na „jít do“ soboty.

Nyní můžeme vyzkoušet něco jako:

pro SomeDay: = Monday na Neděle dělat-li SomeDay = Tuesday pak
ShowMessage ('Tuesday it is!');

Knihovna komponent Delphi Visual Component Library používá vyjmenované typy na mnoha místech. Například pozice formuláře je definována takto:

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

Pomocí pozice (prostřednictvím Object Inspector) získáme nebo nastavíme velikost a umístění formulář.

Druhy uspořádání

Jednoduše řečeno, typ subrange představuje podmnožinu hodnot v jiném pořadovém typu. Obecně můžeme definovat libovolné podoblasti počínaje jakýmkoli pořadovým typem (včetně dříve definovaného výčtu) a použitím dvojité tečky:

typ TWorkDays = pondělí.. Pátek;

Zde TWorkDays zahrnuje hodnoty pondělí, úterý, středa, čtvrtek a pátek.

To je vše - teď jděte na výčet!

instagram story viewer