Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 20:44   #1
Zeronim
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 11
По умолчанию Контроль ввода в консольном приложении

Здраствуйте, подскажите как реализовать контроль ввода в консоли?Например чтобы ничего не вводилось кроме цифр и точки и нельзя было ввести точку больше 1 раза.
Zeronim вне форума Ответить с цитированием
Старый 31.05.2011, 22:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) какой Паскаль? Turbo Pascal или Delphi ? (консоль принципиально разная!)

2) вообще-то, два варианта:
A. давать вводить что хочешь. ввод осуществлять в строку. После ввода проверять, что там ввели (например, самый действенный и простой способ - проверять через VAL() ) - если ввели неверно - сообщение об ошибке -> переход на начало цикла ввода (повтор ввода).

B. осуществлять ввод нажимаемых клавиш (в TurboPascal - Readkey()) и анализировать, что же нажали.
Если нажаты не те клавиши, игнорировать их, например...
Но в этом случае прийдётся реализовывать простейший однострочный редактор (ну, как минимум нужна обработка клавиши "BackSpace" - в идеале - движение стрелками курсора, Delete, вставка/замена и т.д..) В принципе тоже ничего сложного, но в пару строк кода не уложишься, конечно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2011, 22:52   #3
Zeronim
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) какой Паскаль? Turbo Pascal или Delphi ? (консоль принципиально разная!)

2) вообще-то, два варианта:
A. давать вводить что хочешь. ввод осуществлять в строку. После ввода проверять, что там ввели (например, самый действенный и простой способ - проверять через VAL() ) - если ввели неверно - сообщение об ошибке -> переход на начало цикла ввода (повтор ввода).

B. осуществлять ввод нажимаемых клавиш (в TurboPascal - Readkey()) и анализировать, что же нажали.
Если нажаты не те клавиши, игнорировать их, например...
Но в этом случае прийдётся реализовывать простейший однострочный редактор (ну, как минимум нужна обработка клавиши "BackSpace" - в идеале - движение стрелками курсора, Delete, вставка/замена и т.д..) В принципе тоже ничего сложного, но в пару строк кода не уложишься, конечно...
Это все в Delphi.
Первый вариант не годится.Требуют обработку именно во время ввода.
Можно поподробнее про второй вариант?Как мне проигнорировать символ во время ввода?
Zeronim вне форума Ответить с цитированием
Старый 31.05.2011, 23:33   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Это все в Delphi.
Первый вариант не годится.Требуют обработку именно во время ввода.
весьма и весьма сочувствую...

Цитата:
Можно поподробнее про второй вариант?Как мне проигнорировать символ во время ввода?
смотрите тут:
http://www.programmersforum.ru/showp...64&postcount=4
http://www.programmersforum.ru/showthread.php?t=16317
http://www.programmersforum.ru/showthread.php?t=120107
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2011, 14:41   #5
Zeronim
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Большое спасибо за помощь)
Zeronim вне форума Ответить с цитированием
Старый 05.06.2011, 18:44   #6
Zeronim
Пользователь
 
Регистрация: 27.06.2010
Сообщений: 11
По умолчанию

Кстати, при использовании этого файлика (crt32.pas) многие русские буквы перестают отображаться.Не знаю с чем это связано, но я должен был предупредить тех, кто решится его использовать)
Zeronim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Timer в консольном приложении Lauri Общие вопросы Delphi 8 05.04.2011 04:20
Графика в консольном приложении. Акунёк Общие вопросы C/C++ 11 19.03.2011 20:50
Вывод в консольном приложении Акунёк Общие вопросы C/C++ 6 16.02.2011 18:01
Проблема с ClientSocket в консольном приложении prod87 Работа с сетью в Delphi 1 18.07.2010 14:48