Не получается меню - Free Pascal
Формулировка задачи:
Бодрого дня, господа.
Ни как не могу сваять свое меню.
Я понимаю. Образцов кругом хоть пруд пруди. Но...
Везде образцы рассчитаны на то, что будет только одно меню.
Типичный пример:
или
т. е. применяется массив с конкретным количеством пунктов, заданном константой.
В моем случае все чуток по другому. Мне необходимо 4 меню. В каждом разное количество пунктов. И сами пункты, разумеется, разные.
Пробовал применять динамичный массив - не катит.
Листинг программы
- m:array[1..5] of string=('Имя файла ',
- 'Создать ',
- 'Посмотреть ',
- 'Редактировать',
- 'Выход ');
Листинг программы
- const
- N=4;
- var
- menu:array[1..N] of string[20];
Решение задачи: «Не получается меню»
textual
Листинг программы
- {$mode objfpc}
- uses Crt;
- function Menu(const items : array of string) : integer;
- var
- i : integer;
- kod : char;
- begin
- result := 0;
- repeat
- TextAttr := 16 * Black + LightGray;
- clrscr;
- for i := 0 to High(items) do
- begin
- if i = result then TextAttr := 16 * LightGray + Black
- else TextAttr := 16 * Black + LightGray;
- writeln(items[i]:20);
- end;
- kod := readkey;
- case kod of
- #0:
- case readkey of
- #72:
- begin
- dec(result);
- if result < 0 then result := high(items);
- end;
- #80:
- result := succ(result) mod length(items);
- end;
- end;
- until kod=#13;
- inc(result);
- end;
- var
- b_main, b_sub : boolean;
- begin
- b_main := false;
- repeat
- case Menu(['main 1', 'main 2', 'main 3', 'main 4', 'exit']) of
- 1: repeat
- b_sub := false;
- case Menu(['sub1_1', 'sub1_2', 'sub1_3', 'exit']) of
- 1 : writeln('1_1');
- 2 : writeln('1_2');
- 3 : writeln('1_3');
- 4 : b_sub := true;
- end;
- until b_sub;
- 2: repeat
- b_sub := false;
- case Menu(['sub2_1', 'sub2_2', 'exit']) of
- 1 : writeln('2_1');
- 2 : writeln('2_2');
- 3 : b_sub := true;
- end;
- until b_sub;
- // ...
- 5: b_main := true;
- end;
- until b_main;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д