Zrozumienie typu Delphi SET
jeśli ModalResult w [mrYes, mrOk] to ...
blackred/E+/Getty Images
Jeden z Język Delphi cechami nie spotykanymi w innych językach nowożytnych jest pojęcie zbiorów.
Delphi składać czcionki do druku to zbiór wartości tego samegoZestaw definiuje się za pomocą zestaw słowo kluczowe:
Typy zestawów są zwykle definiowane za pomocą podzakresów.
W powyższym przykładzie TMagicNumber jest niestandardowym typem podzakresu umożliwiającym zmiennym typu TMagicNumber otrzymywanie wartości od 1 do 34. Mówiąc prościej, typ podzakresu reprezentuje podzbiór wartości w innym typie porządkowym.
Możliwe wartości typu zestawu to wszystkie podzbiory typu podstawowego, w tym zestaw pusty.
Ograniczeniem zestawów jest to, że mogą pomieścić do 255 elementów.
W powyższym przykładzie typ zestawu TMagicSet jest zbiorem elementów TMagicNumber - liczb całkowitych od 1 do 34.
Deklaracja TMagicSet = zestaw TMagicNumber jest równa następującej deklaracji: TMagicSet = zestaw 1..34.
Ustaw zmienne typu
W powyższym przykładzie zmienne pustyMagicSet , oneMagicSet oraz innyMagicSet są zestawami TMagicNumber.
Do przypisz wartość do zmiennej typu zestawu, użyj nawiasów kwadratowych i wypisz wszystkie elementy zestawu. Jak w:
Uwaga 1: każda zmienna typu zestawu może zawierać pusty zestaw, oznaczony [].
Uwaga 2: kolejność elementów w zestawie nie ma znaczenia, ani nie ma znaczenia, aby element (wartość) był zawarty w zestawie dwukrotnie.
Słowo kluczowe IN
Aby sprawdzić, czy element jest wliczony w cenę w zestawie (zmienna) użyj W słowo kluczowe:
Ustaw operatorów
W ten sam sposób, w jaki możesz zsumować dwie liczby, możesz mieć zestaw, który jest sumą dwóch zestawów. Dzięki zestawom Twoje wydarzenie ma więcej operatorów:
- + zwraca sumę dwóch zestawów.
- - zwraca różnicę dwóch zestawów.
- * zwraca część wspólną dwóch zbiorów.
- = zwraca prawdę, jeśli dwa zestawy są równe - mają ten sam element.
- <= returns true if the first set is a subset of the second set.
- >= zwraca prawdę, jeśli pierwszy zestaw jest nadzbiorem drugiego zestawu.
- zwraca prawdę, jeśli dwa zestawy nie są identyczne.
- IN zwraca prawdę, jeśli element jest zawarty w zestawie.
Oto przykład:
Czy zostanie wykonana procedura ShowMessage? Jeśli tak, co zostanie wyświetlone?
Oto implementacja funkcji DisplayElements:
Podpowiedź: tak. Wyświetlono: '18 | 24 |”.
Liczby całkowite, znaki, wartości logiczne
Oczywiście podczas tworzenia typów zestawów nie jesteś ograniczony do wartości całkowitych. Typy porządkowe Delphi obejmują wartości znakowe i logiczne.
Aby uniemożliwić użytkownikom wpisywanie klawiszy alfa, dodaj tę linię w OnKeyPresskontrolki edycji:
Zestawy z wyliczeniami
Powszechnie stosowanym scenariuszem w kodzie Delphi jest mieszanie zarówno typów wyliczanych, jak i typów zestawów.
Oto przykład:
Pytanie: czy wiadomość zostanie wyświetlona? Odpowiedź: nie :(
Zestawy we właściwościach sterowania Delphi
Kiedy musisz zastosować „pogrubienie” do czcionki używanej w kontrolkach TEdit, użyj Inspektora obiektów lub następującego kodu:
Właściwość Font's Style jest właściwością typu zestawu! Oto jak to się definiuje:
Tak więc typ wyliczeniowy TFontStyle jest używany jako typ podstawowy dla typu zestawu TFontStyles. Właściwość Style klasy TFont jest typu TFontStyles — dlatego jest to właściwość typu zestawu.
Inny przykład zawiera wynik funkcji MessageDlg. Funkcja MessageDlg służy do wywołania okna wiadomości i uzyskania odpowiedzi użytkownika. Jednym z parametrów funkcji jest parametr Przyciski typu TMsgDlgButtons.
TMsgDlgButtons jest zdefiniowany jako zbiór (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).
Jeśli wyświetlisz użytkownikowi komunikat zawierający przyciski Tak, OK i Anuluj i chcesz wykonać jakiś kod po kliknięciu przycisku Tak lub Ok, możesz użyć następnego kodu:
Ostatnie słowo: zestawy są świetne. Zestawy mogą wydawać się mylące dla Początkujący Delphi , ale jak tylko zaczniesz używać zmiennych typu set, przekonasz się, że dostarczają one znacznie więcej, niż się wydawało na początku.