Zrozumienie i używanie typów danych zapisu w Delphi

click fraud protection

Zestawy są w porządku, tablice są świetne.

Załóżmy, że chcemy stworzyć trzy jednowymiarowe tablice dla 50 członków w naszej społeczności programistów. Pierwsza tablica dotyczy nazw, druga wiadomości e-mail, a trzecia liczby przesłanych treści (komponentów lub aplikacji) do naszej społeczności.

Każda tablica (lista) miałaby pasujące indeksy i mnóstwo kodu, aby utrzymać wszystkie trzy listy równolegle. Oczywiście możemy spróbować z jedną trójwymiarową tablicą, ale co z jej typem? Potrzebujemy ciąg znaków dla nazwisk i e-maili, ale liczba całkowita dla liczby przesłanych plików.

Sposobem pracy z taką strukturą danych jest użycie Delphi struktura zapisu.

TMember = Record...

Na przykład poniższa deklaracja tworzy typ rekordu o nazwie TMember, którego możemy użyć w naszym przypadku.

Zasadniczo struktura danych zapisu może mieszać dowolny z wbudowanych typów Delphi w tym wszelkie utworzone typy. Typy rekordów definiują stałe zbiory elementów różnych typów. Każdy element lub pole, jest jak zmienna, składająca się z nazwy i typu.

instagram viewer

TMember typ zawiera trzy pola: wartość ciągu o nazwie Nazwa (do przechowywania nazwy członka), wartość typu ciągu o nazwie e-mail (dla jednej wiadomości e-mail) oraz liczba całkowita (kardynał) o nazwie Posty (w celu przechowywania liczby zgłoszeń do naszego społeczność).

Po skonfigurowaniu typu rekordu możemy zadeklarować zmienną typu TMember. TMember jest teraz równie dobrym typem zmiennych dla zmiennych, jak każda z nich Delphis wbudowane typy, takie jak String lub Integer. Uwaga: deklaracja typu TMember nie przydziela pamięci dla pól Nazwa, Wiadomość e-mail i Wiadomości;

Aby faktycznie utworzyć instancję rekordu TMember, musimy zadeklarować zmienną typu TMember, jak w poniższym kodzie:

Teraz, kiedy mamy zapis, używamy kropki do izolowania pól DelphiGuide.

Uwaga: powyższy fragment kodu można przepisać przy użyciu zsłowo kluczowe.

Możemy teraz skopiować wartości pól DelphiGuide do AMember.

Zakres rekordu i widoczność

Typ rekordu zadeklarowany w deklaracji formularza (sekcji implementacyjnej), funkcji lub procedury ma zakres ograniczony do bloku, w którym jest deklarowany. Jeśli rekord jest zadeklarowany w sekcji interfejsu jednostki, ma zakres obejmujący wszelkie inne jednostki lub programy, które używają jednostki, w której występuje deklaracja.

Tablica rekordów

Ponieważ TMember działa jak każdy inny typ Object Pascal, możemy zadeklarować tablicę zmiennych rekordu:

Uwaga: oto jak to zrobić zadeklaruj i zainicjuj stałą tablicę rekordów w Delphi.

Rekordy jako pola rekordu

Ponieważ typ rekordu jest uzasadniony, jak każdy inny typ Delphi, możemy mieć pole rekordu jako rekord. Na przykład możemy utworzyć ExpandedMember, aby śledzić, co członek przesyła wraz z informacjami o członku.

Wypełnienie wszystkich informacji potrzebnych do jednego rekordu jest teraz w jakiś sposób trudniejsze. Dostęp do pól TExpandedMember wymaga więcej kropek (kropek).

Nagrywaj z polami „Nieznane”

Typ rekordu może składać się z części wariantowej (nie mylić ze zmienną typu Wariant). Rekordy wariantów są używane na przykład, gdy chcemy utworzyć typ rekordu z polami różne rodzaje danych, ale wiemy, że nigdy nie będziemy musieli używać wszystkich pól w jednym rekordzie instancja. Aby dowiedzieć się więcej o częściach wariantowych w dokumentacji, przejrzyj pliki pomocy Delphi. Użycie wariantu typu rekordu nie jest bezpieczne dla typu i nie jest zalecaną praktyką programowania, szczególnie dla początkujących.

Jednak zapisy wariantów mogą być bardzo przydatne, jeśli znajdziesz się w sytuacji, aby z nich skorzystać.

instagram story viewer