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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2009, 07:31   #1
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию Pascal пара вопросов

Привет всем.

Вопрос 1:
Есть программа, которая выполняет две функции, и при запуске выдаёт вопрос какую функцию запустить, первую (1) или вторую (2).
и в зависимости от того что я нажму (1 или 2) запустится нужная функция.
Так вот нужно сделать так чтобы ввести возможно было только либо '1' либо '2' - тоесть чтобы ни другие цифры ни знаки и не буквы тупо нельзя было ввести. Как это сделать? (Знаю что на Паскале такое сделать можно, но как?)

Вопрос 2:
Как ограничить количество вводимых символов, тоесть чтобы нельзя было ввести больше пяти символов?

Спасибо
Rus 47 вне форума Ответить с цитированием
Старый 20.02.2009, 08:09   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

1. можно через цикл repeat оргаизовать ввод до тех пор пока не ввели 1 или 2

2. можно создать переменную типа string в которую добавлять символы. Перед добавлением очередного символа нужно подсчитать кол-во символов этой переменной c с помощью ф-ии length, далее условие если символов меньше 5 то добавляем очередной если =>5 то ничего не добавляем
SERG1980 вне форума Ответить с цитированием
Старый 20.02.2009, 08:11   #3
Тёма(C@$pEr)
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 36
По умолчанию

Цитата:
Так вот нужно сделать так чтобы ввести возможно было только либо '1' либо '2' - тоесть чтобы ни другие цифры ни знаки и не буквы тупо нельзя было ввести. Как это сделать?
Попробуй сделать с case. тип:
case x of
1:<действие>;
2:<действие>;
end.
Тёма(C@$pEr) вне форума Ответить с цитированием
Старый 20.02.2009, 08:26   #4
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

SERG1980, Тёма(C@$pEr)

Это-то ясно, это я умею )))

Но нужно сделать так чтобы ненужные символы вобще не вводились - тоесть на чёрном экране например ввожу я 'kjdfk394df75efw' а отобразилось что я ввёл только 39475
Иными словами сделать так чтобы "поле" ввода игнорировало нажатие клавиш с символами...
ну где то примерно так, и со ворым вопросом тоже чтобы после пяти символов игнорировалось любое нажатие на клавишу (ну кроме ентера).

Я конечно НЕ имею ввиду частичное или полное отключение клавиатуры (если конечно такое возможно)...

Бред конечно но всё же.
Спасибо.
Rus 47 вне форума Ответить с цитированием
Старый 20.02.2009, 10:03   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

тогда стать ещё условие на проверку ввода
например
Код:
k:char
if not (k in['0'..'9'])then k:=#0
SERG1980 вне форума Ответить с цитированием
Старый 20.02.2009, 16:26   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

для этого есть функция Rуadkey модуля CRT
capta1n вне форума Ответить с цитированием
Старый 20.02.2009, 16:39   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

вот вариант ввода в первом вопросе:

Код:
program xd;
uses crt;
var
 c : char;
begin
  repeat
    c:=readkey;
    if c in ['1','2'] then write (c)
  until (c='1') or (c='2');
  case c of
   '1' : begin end;
   '2' : begin end;
  end;
end.
вот второй вопрос:

Код:
program xd;
uses crt;
var
 c : char;
 k : 0..5;
begin
  k:=0;
  repeat
    c:=readkey;
    if k<5 then
    begin
      write (c);
      inc(k)
    end
  until c=#27
end.

Последний раз редактировалось capta1n; 20.02.2009 в 16:54.
capta1n вне форума Ответить с цитированием
Старый 20.02.2009, 17:23   #8
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

capta1n
Спасибо большое за ответ на первый вопрос, то что надо )
Но вот про ответ на второй вопрос у меня есть пара вопросов
1 не работает кнопка backspace тоесть стереть то что я написал не дают
2 не могли бы Вы объяснить что значит until c=#27 (просто к этому могут придраться)
А в остальном то что надо, спасибо!
Rus 47 вне форума Ответить с цитированием
Старый 20.02.2009, 17:35   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Rus 47
1. backspace и не должен работать. Но можно немного модифицировать код, чтобы работал:
Код:
program xd;
uses crt;
var
 c : char;
 k : 0..5;
begin
  k:=0;
  repeat
    c:=readkey;
    if c=#8 then
     begin
     gotoXY(whereX-1,whereY);
     clreol;
     if k>0 then dec(k);
     end
    else
     if k<5 then
      begin
       write (c);
       inc(k);
      end
  until c=#27
end.
2.
Код:
until c=#27
пока ASCII-код c не станет равным 27 (символ "Esc")
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.02.2009, 23:26   #10
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

capta1n, Sazary
Спасибо большое, очень выручили!
Rus 47 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пара вопросов DeDoK Общие вопросы Delphi 1 10.11.2008 17:58
Пара вопросов [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 18.04.2008 14:28
Пара вопросов... ~N@um~ Помощь студентам 6 14.07.2007 09:49
Пара вопросов. Kukkk Общие вопросы Delphi 5 03.07.2007 11:40
Пара вопросов xak2 Общие вопросы Delphi 6 08.05.2007 20:58