Odwołanie do konkretnej tablicy, w zależności od zmiennej

0

Napisałem funkcję wyświetlającą menu programu, w pętli for:

 for i := 1 to High(tablica) do 
  writeln(tablica[i]);

Nazwy menu siedzą w tablicy stringów. Jednak mam kilka takich menu (menu główne, opcje i tak dalej), więc nie chce przepisywać kodu funkcji 5 razy pod różnymi nazwami (funkcja jest dość duża - robi znacznie więcej niż tylko wyświetla same nazwy, wyświetla też tło, ramki - w zależności od ilości stringów w tablicy, itd).
Zastanawiam się, czy można w jakiś sposób zmienić wywoływaną tablicę w powyższej funkcji w zależności od np zmiennej ?
Powiedzmy, jeśli zmienna ma wartość 1 to wywoła się tablica_1, jeśli zmienna ma wartość 2 to tablica_2 i tak dalej ?

Dziękuje za odpowiedzi i pozdrawiam!

1

Tak. Zrób sobie z tego oddzielną funkcję/procedurę i przekazuj jej w parametrze wywołania tablicę, z której ma korzystać.

0
procedure JakaTablica(JakaZmienna:integer);
var
i: integer;
begin
  if JakaZmienna = 1 then  for i := 1 to High(tablica_1) do writeln(tablica_1[i]) else
  if JakaZmienna = 2 then  for i := 1 to High(tablica_2) do writeln(tablica_2[i]) else
  writeln('tablica_'+JakaZmienna+' nie istnieje');
end; 
0

lankusiek - pisałem wcześniej, że funkcja jest dużo większa niż jedna linia - to był tylko przykład. Musiałbym w ten sposób pisać tyle funkcji, ile jest menu, a ja to chciałem zrobić na jednej funkcji (ale nie na zasadzie kilkudziesięciu ifów i przepisywaniem tego samego kodu po kilka razy).

[losowa nazwa] - świetny pomysł i wszystko działa jak należy. Zrobiłem procedurę pomocniczą, która zawiera tylko case z nazwami tablic i wywołuje funkcję główną z parametrem - konkretną tablicą. Dzięki wielkie za pomysł !

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