Помощь - Поиск - Пользователи - Календарь
Полная версия: Как создать меню в Паскале ?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
yutkatch
Дано много прцедур и Функций , надо составить Меню , так , что бы каждой процедуре или финкции соотвествовала даная цифра и при вводе этой цифры - выполнялась даная процедура(функция).

И еще такой вопрос , как его зациклить , что бы после выполнения некой процедуры(функции) опять появлялось МЕНЮ . И только при нажатии "Выход", программа закончила работу ??

Ув. Админы, Модераторы Я прошу , мне дать ссылку , если такое решение задачи уже есть на вашем форуме!!!
Если нет , то прошу помогите разобратся с этой задачей! unsure.gif
volvo
yutkatch
Ссылки надо искать. Для этого существует кнопка "Поиск"...
Форма поиска

Вот малая часть того, что поиск выдал:

http://forum.pascal.net.ru/index.php...indpost&p=31026
http://forum.pascal.net.ru/index.php...indpost&p=29199
http://forum.pascal.net.ru/index.php...indpost&p=28880
klem4
Цитата(yutkatch @ 26.01.05 11:34)
Дано много прцедур и Функций  , надо составить Меню  , так , что бы каждой процедуре или финкции соотвествовала  даная цифра и при вводе этой цифры - выполнялась даная процедура(функция).




Очень простой, но далеко не лучший вариант :

Код
var ch:char;
Begin
  ch:=readkey;
  case ch of
  '1' : Имя_процедуры1;
  '2' : Имя_функции2;

  ...
  end;
yutkatch
Сенкс .....! smile.gif
klem4
!!! то что я написал, годится только в том случае, если кол-во процедур у тебя не более 10! так как char воспринимает только один символ, тоесть в случае с цифрами (0..9)

Тогда по простому еще можно так
Код
var
  num:byte;

begin
  Readln(num);
  case num of
  1: Имя_процедуры
  2:
   ...
  end;


Это сосвем примитивные способы, но в случае маленьких ,не сложных программ, годятся , мне кажется smile.gif
volvo
yutkatch
Цитата
как его зациклить , что бы после выполнения некой процедуры(функции) опять появлялось МЕНЮ

Что-то типа этого:
Код

var
 num:byte;
 Done: Boolean;

begin
 done := False;
 repeat
   { Здесь - вывод меню }
   Readln(num);
   case num of
   1: Имя_процедуры
   2:
    ...
   9: Done := True; { Выход }
   end;
 until done; { Если выбран выход - цикл заканчивается... }
end.
Werwolf86
Давай мыло...вышлю)) правда есть две процедурки на асме))
;)
Nemo
Завести массив указателей, а потом вызывать их по индексам (индекс - ввденное число)
Altair
Не рационально в плане использования памяти. (4x(кол-во функций)) байт займет такой массив...
volvo
Nemo, в следующий раз прежде чем что-то постить, подумайте, какой должна быть программа, чтобы использование Вашего меню было рационально...
Nemo
Цитата
Nemo, в следующий раз прежде чем что-то постить, подумайте, какой должна быть программа, чтобы использование Вашего меню было рационально...


Можно поподробней: что не так?
volvo
Цитата
что не так?

Пример. У меня есть программа из 4-х функций (25 строк), и я хочу в нее добавить простейшее меню... Есть мне смысл пользоваться таким меню? Каков полный размер Вашего исходника?
Nemo
Размер 21.1 KB. Но это из-за использования объекта TBigCur. Я не предлагал целиком использовать мое меню, я лишь хотел показать, как можно вызывать функцию по ее индексу (это нажатие клавиши или что угодно). Тут нужно уже самому думать, как это лучше применить чтобы использование моего "меню было рационально... "
klem4
Nemo , я думаю Volvo имел в виду не размер исходника в килобайтах, а кол-во строк в программе smile.gif
Nemo
Цитата
Nemo , я думаю Volvo имел в виду не размер исходника в килобайтах, а кол-во строк в программе


Странно, конечно размер измерять в строках, но пусть даже так...
klem4
Цитата
Странно, конечно размер измерять в строках, но пусть даже так...


возможно, что я и не прав.
Jahnerus
;) Кажется принято измерять размер исходника количеством использованных операторов (не беру в расчёт "+","-" и т.д. в одном выражении)... и если следовать нормальному стилу программирования и не пихать всё в одну строчку то можно сказать что и количеством строк.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.