i próbuję napisać funkcję która jako parametr dostaje tablicę tablic
No to najpierw się zdecyduj — chcesz mieć tablicę dwuwymiarową, czy tablicę tablic?
Tak, to dwie różne rzeczy, do dwóch różnych zastosowań. Tablica dwuwymiarowa zawsze jest spójnym blokiem pamięci i każdy wiersz w niej istniejący ma tyle samo kolumn (tak po ludzku pisząc). Można je stosować zarówno do deklaracji tablic o rozmiarze statycznym, jak i dynamicznym.
Natomiast tablica tablic, to — jak sama nazwa wskazuje — tablica jednowymiarowa, której każda komórka zawiera tablicę jednowymiarową. Taki cudak nie jest jednym wielkim i spójnym blokiem pamięci, każda komórka głównej tablicy może posiadać tablicę o różnej wielkości. Głównie stosuje się to w przypadku tablic o większej liczbie wymiarów, w której każda osadzona tablica może zmieniać rozmiar w runtime.
ale dostaję błąd: Ordinal type required
Jeśli dostajesz błąd kompilacji, to bądź łaskaw nie tylko podać jego treść, ale też podać treść linijki, której on dotyczy, a także numeru znaku (albo inaczej miejsca, do którego IDE przenosi ci kursor tekstowy).
Co robię źle?
Nie wiem, we Free Pascalu kompiluje się i działa poprawnie (zawartość tablicy dla wywołania przekleiłem z twojego posta):
type
T2DArrayOfByte = array of array of Byte;
procedure Foo(const AArray: T2DArrayOfByte);
begin
// do something
end;
begin
Foo([[12,16],[18],[22,23],[26],[28],[32,33],[34],[36,37],[50]]);
end.
Może ten błąd dotyczy zupełnie innej linijki, niezwiązanej z tymi tablicami. :D