function menu(TA : byte; const items : array of string) : integer; var i : integer; ch : char; begin TextAttr := TA; clrscr; for i := 0 to Length(items) - 1 do begin gotoxy(11, 4 + i); write(items[ i ]); end; gotoxy(12, 2); write(' Your choice : ');
repeat ch := readkey; until Ord(ch) - Ord('0') in [1 .. Length(items)]; menu := Ord(ch) - Ord('0'); end;
var Old_Color : byte; begin Old_Color:=Textattr; repeat Window(1, 1, 80, 25); TextAttr := Black shl 4 + Cyan; ClrScr; GotoXY(5, 1); Write(' JIa6apaTopHa9I #3'); Window(20, 8, 60, 18);
case menu(Black shl 4 + Cyan, mainMenu) of 1 : case menu(Black shl 4 + Cyan, submenu_1) of 1 : begin end; 2 : begin end; end;
2 : case menu(Black shl 4 + Yellow, submenu_2) of 1 : begin end; 2 : begin end; 3 : begin end; end;
3 : case menu(Black shl 4 + Red, submenu_3) of 1 : begin end; 2 : begin end; end;
(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))
Rian
1.11.2011 4:04
Цитата(IUnknown @ 31.10.2011 21:59)
(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))
очень привык к динамическим
INZA
5.11.2011 0:19
Цитата(IUnknown @ 31.10.2011 23:59)
Пишется простейшая функция, которая, собственно, отображает менюшку, и делается так:
(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))
спасибо
INZA
26.11.2011 21:50
Цитата(IUnknown @ 31.10.2011 23:59)
Меню любой степени вложенности(Показать/Скрыть)
for i := 0 to Length(items) - 1 do
error 67:string expression expected.
IUnknown
26.11.2011 21:55
Какой компилятор?
INZA
26.11.2011 21:58
Цитата(IUnknown @ 26.11.2011 18:55)
Какой компилятор?
Free Pascal
IUnknown
26.11.2011 22:05
Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:
function menu(TA : byte; const items : array of string) : integer; var i : integer; ch : char; begin TextAttr := TA; clrscr; for i := 0 to High(items) do begin gotoxy(11, 4 + i); write(items[ i ]); end; gotoxy(12, 2); write(' Your choice : '); repeat ch := readkey; until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1]; menu := Ord(ch) - Ord('0'); end;
INZA
26.11.2011 22:14
Цитата(IUnknown @ 26.11.2011 19:05)
Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:
function menu(TA : byte; const items : array of string) : integer; var i : integer; ch : char; begin TextAttr := TA; clrscr; for i := 0 to High(items) do begin gotoxy(11, 4 + i); write(items[ i ]); end; gotoxy(12, 2); write(' Your choice : '); repeat ch := readkey; until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1]; menu := Ord(ch) - Ord('0'); end;
а нет перепутал извините всё таки турбо запустил на free всё пошло))) ещё раз спасибо
INZA
11.12.2011 22:56
Цитата(IUnknown @ 26.11.2011 19:05)
Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:
function menu(TA : byte; const items : array of string) : integer; var i : integer; ch : char; begin TextAttr := TA; clrscr; for i := 0 to High(items) do begin gotoxy(11, 4 + i); write(items[ i ]); end; gotoxy(12, 2); write(' Your choice : '); repeat ch := readkey; until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1]; menu := Ord(ch) - Ord('0'); end;
почему то когда так сделал пропал пункт Exit,не скажете почему? всё не надо я сделал
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.