Delphi's język programowania jest przykładem silnie napisanego języka. Oznacza to, że wszystkie zmienne muszą być jakiegoś typu. Typ to w zasadzie nazwa pewnego rodzaju danych. Kiedy deklarujemy zmienną, musimy określić jej typ, który określa zestaw wartości, które może przechowywać zmienna oraz operacje, które można na niej wykonać.
Wiele wbudowanych typów danych Delphi, takich jak Integer lub Strunowy, można udoskonalić lub połączyć, aby utworzyć nowe typy danych. W tym artykule zobaczymy, jak tworzyć niestandardowe typy danych porządkowych Delfy.
Typy porządkowe
Charakterystyczne cechy porządkowych typów danych są następujące: muszą się one składać ze skończonej liczby elementów i muszą być w jakiś sposób uporządkowane.
Najczęstszymi przykładami porządkowych typów danych są typy całkowite, a także Char i Boolean rodzaj. Dokładniej, Object Pascal ma 12 predefiniowanych typów porządkowych: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool i Char. Istnieją również dwie inne klasy typów porządkowych zdefiniowanych przez użytkownika: typy wyliczone i typy podzakresów.
We wszystkich typach porządkowych sensowne jest przechodzenie do następnego lub poprzedniego elementu. Na przykład typy rzeczywiste nie są porządkowe, ponieważ przejście do tyłu lub do przodu nie ma sensu. Pytanie „Co będzie następne po 2.5?” jest bez znaczenia.
Ponieważ z definicji każda wartość oprócz pierwszej ma unikatowego poprzednika, a każda wartość oprócz ostatniej ma unikatowego następcę, kilka predefiniowanych Funkcje są używane podczas pracy z typami porządkowymi:
Funkcjonować | Efekt |
Ord (X) | Podaje indeks elementu |
Pred (X) | Przechodzi do elementu wymienionego przed X w typie |
Succ (X) | Przechodzi do elementu wymienionego po X w typie |
Dec (X; n) | Cofa n elementów wstecz (jeśli n zostanie pominięte, cofa 1 element wstecz) |
Inc (X; n) | Przesuwa n elementów do przodu (jeśli n zostanie pominięte, przesuwa 1 element do przodu) |
Niska (X) | Zwraca najniższą wartość z zakresu porządkowego typu danych X |
Wysoka (X) | Zwraca najwyższą wartość z zakresu porządkowego typu danych X |
Na przykład High (Byte) zwraca 255, ponieważ najwyższa wartość typu Byte to 255, a Succ (2) zwraca 3, ponieważ 3 jest następcą 2.
Uwaga: Jeśli spróbujemy użyć Succ, gdy w ostatnim elemencie Delphi wygeneruje a wyjątek czasu wykonywania jeśli sprawdzanie zasięgu jest włączone.
Typ wyliczony Delphi
Najłatwiejszym sposobem utworzenia nowego przykładu typu porządkowego jest po prostu lista wiązek elementów w określonej kolejności. Wartości nie mają nieodłącznego znaczenia, a ich porządek jest zgodny z kolejnością, w której identyfikatory są wymienione. Innymi słowy, wyliczenie jest listą wartości.
rodzaj TWeekDays = (poniedziałek, wtorek, środa, czwartek, piątek, sobota, niedziela);
Po zdefiniowaniu wyliczonego typu danych możemy zadeklarować zmienne tego typu:
var SomeDay: TWeekDays;
Podstawowym celem wyliczonego typu danych jest wyjaśnienie, jakie dane są twoje program będzie manipulować. Typ wyliczony jest tak naprawdę tylko skrótowym sposobem przypisywania stałych wartościom sekwencyjnym. Biorąc pod uwagę te deklaracje, wtorek jest stałą rodzaju TWeekDays.
Delphi pozwala nam pracować z elementami w wyliczonym typie przy użyciu indeksu pochodzącego z kolejności, w jakiej zostały wymienione. W poprzednim przykładzie poniedziałek w TWeekDays deklaracja typu ma indeks 0, wtorek ma indeks 1 i tak dalej. Funkcje wymienione w tabeli wcześniej pozwalają na przykład użyć Succ (piątek), aby „przejść do” soboty.
Teraz możemy spróbować czegoś takiego:
dla SomeDay: = poniedziałek do niedziela robićgdyby SomeDay = Wtorek następnie ShowMessage („wtorek jest!”);
Biblioteka komponentów wizualnych Delphi używa wyliczonych typów w wielu miejscach. Na przykład pozycja formularza jest zdefiniowana w następujący sposób:
TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);
Używamy pozycji (za pośrednictwem Inspektora obiektów), aby uzyskać lub ustawić rozmiar i położenie Formularz.
Rodzaje podzakresów
Mówiąc najprościej, typ podzakresu reprezentuje podzbiór wartości w innym typie porządkowym. Zasadniczo możemy zdefiniować dowolny podzakres, zaczynając od dowolnego typu porządkowego (w tym wcześniej zdefiniowanego typu wyliczanego) i używając podwójnej kropki:
rodzaj TWorkDays = poniedziałek.. Piątek;
Tutaj TWorkDays obejmuje wartości poniedziałek, wtorek, środa, czwartek i piątek.
To wszystko - teraz idź wymienić!