Sprawdzanie długości tablicy (liczby elementów)

0

Mam program ,który generuje tablice o zmiennej długości. W jaki sposób sprawdzić z ilu elementów składa się jakaś tablica? Szukam funkcji ,która mi to zwraca. Nie mam pomysłu jak to zrobić.

Przykład:

Mam tablicę :

var
tablica : array of integer
begin
tablica := (1,2,3,4,5,6,7);
end. 

Szukam funkcji ,która zwróci liczbę elementów tej tablicy ,czyli 7.

0

Pomijając fakt, że tak się tablicy zmiennych w Delphi/Pascalu nie wypełnia, to co do funkcji zwracającej długośc tablicy jest tak jak napisał Resident, czyli Length(Tablica);.

0

Możliwe ,że składnia mi się miesza ,właśnie przerzuciłem się z C :P

Czy mogę prosić o napisanie ,jak ta funkcja Lenght wygląda od środka (definicja funkcji) albo podanie biblioteki ,z której pochodzi to sam ją sobie znajdę. Niestety mój kompilator nie zna tej funkcji ,więc będę musiał napisać ją sam.

Kombinowałem wcześniej z wielkością całej tabeli w bajtach ,podzieloną przez wielkość jednego elementu. Niestety nie wiem jak sprawdzić rozmiar całej tabeli ,sizeof(array) zwraca rozmiar pierwszego elementu.

0

Length() pochodzi z biblioteki System, automatycznie włączanej do każdego programu w Delphi. Nie da się jej nie mieć.
Ewentualnie możesz jeszcze użyć High(), zwraca ostatni (najwyższy) indeks tablicy.

0

Nie korzystam ze standardowego kompilatora pascala i takie funkcje jak Lenght ,High czy Halt u mnie nie działają ,póki sam ich nie napiszę. Czy ktoś może mi pomóc napisać funkcje od podstaw?

0

To czego używasz ? To jest w KAŻDYM kompilatorze pascala, o ile wiem.

0

To w czym Ty piszesz? W FPC również takie funkcje jak Length czy High są w środku, niemożliwe żeby to Tobie nie działało. Dlatego pisz w Delphi lub FPC. Bo szczerze pisząc - nie wiem jak takie funkcje wyglądają od środku. Bo w kodzie system.pas ze źródeł dołaczonych do Delphi 7 Enterprise ich nie widze. One są chyba nawet poza system.pas, to po prostu standard języka, to tak jakby chcieć wiedzieć gdzie siedzi w kodzie if czy begin lub end. Bo High nie było chyba w bardzo dawnych Pascalach jak na przykład High Speed Pascal dla Amigi, ale we współczesnych wersjach kompilarotów na pewno one są dostępne.

0

Korzystam z kompilatora OperSource ,który nie jest jeszcze do końca dopracowany.

Czy ktoś pamięta w jaki sposób tablice są alokowane w pamięci? O ile pamiętam na końcu każdego stringa wystepuje jeden albo dwa bajty o wartości 0. Czy tak samo jest ze wszystkimi tablicami? Jeśli tak, na początku tablicy można umieścić wskaźnik i przesuwać go o rozmiar elementu ,aż wskaże na 0. Oczywiście element o wartości zerowej "skróci" długość tablicy ,ale zawsze coś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1