![]() |
![]() |
1234 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: 1234 Репутация: ![]() ![]() ![]() |
Изучивши предложенные варианты и впоследствии систематизировав их, я понял что это не то. А вот те критерии, которые считаю главенствующими в моём представлении о меню:
1)Небольшое(20-40 строк)-иначе говоря для чайников; 2)Расположенное только в процедуре(НЕ в модуле и основной программе)-чтобы, как говорится с места в карьер; 3)Управление меню только КЛАВИШАМИ (точнее стрелками "вверх" и "вниз"). Причём указанная в данный момент (как бы её назвать) титра должна делать вид, что именно её на даный момент выбрали; 4)Прежде чем спросить про язык, на которым я ПРОШУ написать меню, просто вспомните название сайта; 5)Всего 3 титры. За сим удаляюсь с большой надеждою, всегда ваш 1234. Сообщение отредактировано: 1234 - 2.02.2007 18:04 |
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Эээ... Я не понял. Вам надо, чтом меню сразу высветилось? Или чтоб именно после нажатия клавиши?
В первом случае ридкей убрать надо, конечно. А во втором случае надо перед ридкеем на всякий случай очистить клавиатурный буфер. То есть перед ридкеем надо написать
Я так и не увидел, как вы боритесь со случаем, когда c изначально, при запуске программы, равно #98. В Паскале непроинициализированные переменные не обнуляются. Что было в оперативной памяти до запуска программы, то в переменной и окажется. Далее, замените же наконец Exit на
Вы работаете в проводнике что-ли? Или всё таки в тотал командере? Так вот, некоторые люди, вроде меня, в качестве файлового менеджера используют ФАР, который использует ТЕКСТОВЫЙ режим. И если какая-то программа забыла за собой закрыть графику, то ФАР вместо связной картинки выведет на экран бред. А тем, кто работает под ДОСом после вашей программы остаётся либо запустить что-нибудь, восстнавливающее текстовыцй режим, либо всё - РЕСЕТ. Для вывода сведений о программе вместо options пишут about... Определитесь с отступами - 2 или 3 пробела. А то увидел, как вы мою процедуру переписали - чуть не упал. Лучше бы вы её просто ctrl-insert - shift-insert в любую виндоуз-программу, в которой открыт ваш ***.pas. Меня сейчас все обматерят, но рекомендую для повышения читабельности писать бегин на одной строчке с предыдущим словом (енд - елсе тоже пишите в одну строчку, а не так, что елсе на следующей строке после десяти пробелов) и писать все зарезервированные слова маленькими буквами. Конечно, выбор стиля программирования - дело творческое, но вы, похоже, этот выбор ещё не сделали. Далее, не рекомендую defaultfont. Например потому, что у некоторых (у меня, например) этот шрифт вместо цифр и пробелов рисует иероглифы. Или потому, что его нельзя переделать под русские буквы. После writeln('Hello'); неплохо б написать
И при выводе сведений о программе рекомендую во всех outtextxy первым параметром писать GetMaxX div 2 (или shr 1, чтобы мне глаз меньше резало), чтобы весь текст выводился повередине. Либо вы вообще не указывайте явные координаты, либо явно задайте графический режим (Gd := 9; Gm := 2), а то вдруг у кого-то на древнем 8086 - CGA... Надо, чтоб программа либо в любом случае рисовала правильную картинку, либо просто не запускалась на компах с не тем видеоадаптером. И у вас всё равно после вывода сведений о программе вызывается второе меню. Чтобы этого не было, поместите тогда уж первое меню в цикл репит-антил с условием выхода i=0 (где в переменную i сразу записывается значение функции, то есть вместь case menu of сделайте i := menu; case i of). И не забывайте, что #72 - это всё таки 'H', а #0#72 - это уже стрелочка. Либо заводите две переменные для считывания (я так делаю) - Key и ScanKey и пишите везде
либо, случай Key = #0 разбирайте внутри:
И всё, что я вам объясняю сейчас, есть в первой части Фаронова. В который раз я из-за вас нарушаю правило №8, рекламируя одну и ту же книгу... Чёто я после case of стал двоеточия ставить... А ведь вечер ещё не наступил... Сообщение отредактировано: TarasBer - 5.02.2007 15:11 -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 8:17 |