Не получается меню - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д