Tablica typów danych w Delphi
Tablica := Seria wartości
Stickney Design / Moment Open / Getty Images
Tablice pozwalają nam odnosić się do serii zmiennych o tej samej nazwie i używać liczby (indeksu) do wywoływania poszczególnych elementów tej serii. Tablice mają zarówno górną, jak i dolną granicę, a elementy tablicy są ciągłe w obrębie tych granic.
Elementami tablicy są wartości, które są tego samego typu (łańcuch, liczba całkowita, rekord, obiekt niestandardowy).
W Delphi istnieją dwa typy tablic: tablica o stałym rozmiarze, która zawsze ma ten sam rozmiar — tablica statyczna — oraz tablica dynamiczna, której rozmiar może się zmieniać w czasie wykonywania.
Tablice statyczne
Załóżmy, że piszemy program, który pozwala użytkownikowi wprowadzić pewne wartości (np. liczbę spotkań) na początku każdego dnia. Zdecydowalibyśmy się przechowywać informacje na liście. Moglibyśmy nazwać tę listę Spotkania , a każdy numer może być przechowywany jako Terminy[1], Terminy[2] itd.
Aby skorzystać z listy, musimy ją najpierw zadeklarować. Na przykład:
|_+_|deklaruje zmienną o nazwie Appointments, która przechowuje jednowymiarową tablicę (wektor) z 7 wartościami całkowitymi. Biorąc pod uwagę tę deklarację, Terminy[3] oznaczają czwartą wartość całkowitą w Terminach. Liczba w nawiasach nazywa się indeksem.
Jeśli stworzymy tablica statyczna ale nie przypisuj wartości do wszystkich jego elementów, nieużywane elementy zawierają losowe dane; są jak niezainicjowane zmienne. Poniższy kod może służyć do ustawienia wszystkich elementów w tablicy Terminy na 0.
|_+_|Czasami musimy śledzić powiązane informacje w tablicy. Na przykład, aby śledzić każdy piksel na ekranie komputera, musisz odnieść się do jego współrzędnych X i Y za pomocą wielowymiarowy tablica do przechowywania wartości.
Dzięki Delphi możemy deklarować tablice o wielu wymiarach. Na przykład poniższa instrukcja deklaruje dwuwymiarową tablicę 7 na 24:
|_+_|Aby obliczyć liczbę elementów w tablicy wielowymiarowej, pomnóż liczbę elementów w każdym indeksie. Zadeklarowana powyżej zmienna DayHour odkłada na bok 168 (7*24) elementów w 7 wierszach i 24 kolumnach. Aby pobrać wartość z komórki w trzecim wierszu i siódmej kolumnie użyjemy: DayHour[3,7] lub DayHour[3][7]. Poniższy kod może służyć do ustawienia wszystkich elementów w tablicy DayHour na 0.
|_+_|
Tablice dynamiczne
Możesz nie wiedzieć dokładnie, jak duża jest tablica. Możesz chcieć mieć możliwość zmiana rozmiaru tablicy w czasie wykonywania . Tablica dynamiczna deklaruje swój typ, ale nie rozmiar. Rzeczywisty rozmiar tablicy dynamicznej można zmienić w czasie wykonywania za pomocą Ustaw długość procedura.
|_+_|tworzy jednowymiarową dynamiczną tablicę ciągów. Deklaracja nie przydziela pamięci Studentom. Aby utworzyć tablicę w pamięci, wywołujemy procedurę SetLength. Na przykład, biorąc pod uwagę powyższą deklarację,
|_+_|
przydziela tablicę 14 ciągów, indeksowanych od 0 do 13. Tablice dynamiczne są zawsze indeksowane liczbami całkowitymi, zawsze zaczynając od 0 do jednego mniej niż ich rozmiar w elementach.
Aby utworzyć dwuwymiarową tablicę dynamiczną, użyj następującego kodu:
|_+_|
który przydziela miejsce na dwuwymiarową tablicę 10 na 20 podwójnych wartości zmiennoprzecinkowych.
Aby usunąć przestrzeń pamięci tablicy dynamicznej, przypisz nil do zmiennej tablicowej, na przykład:
|_+_|Bardzo często Twój program nie wie w czasie kompilacji, ile elementów będzie potrzebnych; ta liczba nie będzie znana do czasu uruchomienia. Dzięki tablicom dynamicznym można przydzielić tylko tyle pamięci, ile jest wymagane w danym momencie. Innymi słowy, rozmiar tablic dynamicznych można zmienić w czasie wykonywania, co jest jedną z kluczowych zalet tablic dynamicznych.
Następny przykład tworzy tablicę wartości całkowitych, a następnie wywołuje funkcję Copy w celu zmiany rozmiaru tablicy.
|_+_|Funkcja SetLength tworzy większą (lub mniejszą) tablicę i kopiuje istniejące wartości do nowa tablica . Funkcje Low i High zapewniają dostęp do każdego elementu tablicy bez patrzenia wstecz w kodzie na prawidłowe dolne i górne wartości indeksu.