Jeden z Jazyk Delphi rysy nenalezené v jiných moderních jazycích je představa o sadách.
Delphi jetyp sady je kolekce stejných hodnot řadový typ.
Sada je definována pomocí sada klíčové slovo:
Typy sad jsou obvykle definovány pomocí dílčích rozsahů.
Ve výše uvedeném příkladu je TMagicNumber vlastní typ subrange umožňující proměnným typu TMagicNumber přijímat hodnoty od 1 do 34. Jednoduše řečeno, typ subrange představuje podmnožinu hodnot v jiném pořadovém typu.
Možné hodnoty typu sady jsou všechny podmnožiny základního typu, včetně prázdné sady.
Omezení množin spočívá v tom, že pojmou až 255 prvků.
Ve výše uvedeném příkladu je typ sady TMagicSet sada prvků TMagicNumber - celá čísla od 1 do 34.
Prohlášení TMagicSet = sada TMagicNumber se rovná následujícímu prohlášení: TMagicSet = sada 1..34.
Nastavit proměnné typu
Ve výše uvedeném příkladu jsou proměnné emptyMagicSet, oneMagicSet a otherMagicSet jsou sady TMagicNumber.
Na přiřadit hodnotu k proměnné typu sady použijte hranaté závorky a seznam všech prvků sady. Jako v:
Poznámka 1: Každá proměnná typu sady může obsahovat prázdnou sadu, označenou [].
Poznámka 2: Pořadí prvků v sadě nemá žádný význam ani nemá smysl, aby byl prvek (hodnota) zahrnut dvakrát do sady.
Klíčové slovo IN
Testovat, zda prvek je zahrnuto v sadě (proměnná) použijte V klíčové slovo:
Nastavit operátory
Stejným způsobem, jak můžete sčítat dvě čísla, můžete mít sadu, která je součtem dvou sad. U sad má vaše událost více operátorů:
- + vrátí spojení dvou sad.
- - vrátí rozdíl dvou sad.
- * vrací průnik dvou sad.
- = návrat true, pokud jsou dvě sady stejné - mají stejný prvek.
- <= vrátí true, pokud je první sada podmnožinou druhé sady.
- > = vrátí true, pokud je první sada nadřazenou sadou druhé sady.
- <> vrátí true, pokud dvě sady nejsou identické.
- IN vrací true, pokud je prvek zahrnut v sadě.
Zde je příklad:
Bude proveden postup ShowMessage? Pokud ano, co se zobrazí?
Zde je implementace funkce DisplayElements:
Tip: ano. Zobrazeno: "18 | 24 |".
Celá čísla, Postavy, Booleovci
Při vytváření typů sad samozřejmě nejste omezeni na celočíselné hodnoty. Delphi ordinální typy zahrnují znakové a booleovské hodnoty.
Chcete-li uživatelům zabránit v psaní alfa klíčů, přidejte tento řádek do OnKeyPress ovládacího prvku pro úpravy:
Sady s výčty
Běžně používaný scénář v kódu Delphi spočívá v kombinaci enumerovaných typů a typů typů.
Zde je příklad:
Otázka: zobrazí se zpráva? Odpověď: ne :(
Nastavuje vlastnosti kontroly Delphi
Pokud potřebujete použít písmo „tučně“ na písmo použité v ovládacích prvcích TEdit, použijte buď Inspektor objektů nebo následující kód:
Vlastnost Styl písma je vlastnost typu sady! Zde je návod, jak je definován:
Jako základní typ pro sadu typu TFontStyles se tedy používá vyjmenovaný typ TFontStyle. Vlastnost Style třídy TFont je typu TFontStyles - tedy vlastnost typu set.
Další příklad zahrnuje výsledek funkce MessageDlg. Funkce MessageDlg se používá k vyvolání okna se zprávou a získání odpovědi uživatele. Jedním z parametrů funkce je parametr Buttons typu TMsgDlgButtons.
TMsgDlgButtons je definována jako sada (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).
Pokud uživateli zobrazíte zprávu obsahující tlačítka Ano, OK a Zrušit a chcete provést nějaký kód, pokud jste klikli na tlačítka Ano nebo Ok, můžete použít následující kód:
Závěrečné slovo: sady jsou skvělé. Sady se mohou zdát matoucí Delphi začátečník, ale jakmile začnete používat proměnné typu set, zjistíte, že poskytují mnohem více, než na začátku znělo.