пятница, 12 июня 2009 г.

лимитированный ввод

Есть ли какой нибудь оператор ограничивающий кол-во вводимых символов через Input? В Егэ есть задания, где надо вводить например фамилию, но она должна не превышать 20 символов.

такой функции нет - поэтому пишем свою, тем более что она действительно нужна


DECLARE SUB BufInput (StringVar$, Limit%)
'NOTE: DECLARE не поддерживается Microsoft
' Quick Basic версии 3.0 или более ранней версией и может быть удалено

CLS
Limit% = 10 ' Число символов для ввода

' приглашение для ввода строки
LOCATE 10, 5
PRINT "Введите строку из 10 символов: ";
COLOR 0, 7: PRINT SPACE$(Limit%)
LOCATE 10, 46

' ввести строку в буффер
CALL BufInput(a$, Limit%)

COLOR 7, 0
CLS

' вывести результат
LOCATE 10, 10
PRINT "Вы ввели: ";
COLOR 0, 7
PRINT a$
COLOR 7, 0

END

SUB BufInput (StringVar$, Limit%)
BackSp$ = CHR$(8)
Enter$ = CHR$(13)
Length% = 0

' Цикл ожидания ввода. ENTER завершает процедуру
WHILE char$ <> Enter$
char$ = INKEY$
IF char$ <> "" THEN
IF (Length% < Limit%) OR (char$ = BackSp$) THEN
SELECT CASE char$
CASE " " TO "~" ' Ввод только печатных символов
StringVar$ = StringVar$ + char$
PRINT char$;
Length% = Length% + 1
CASE BackSp$ ' если BackSpace - то удалять
IF Length% <> 0 THEN
Length% = Length% - 1
StringVar$ = LEFT$(StringVar$, Length%)
CurrX% = CSRLIN
CurrY% = POS(0) - 1
LOCATE CurrX%, CurrY%
PRINT " "
LOCATE CurrX%, CurrY%
END IF
END SELECT
ELSE
PLAY "o1AL32"
END IF
END IF
WEND

END SUB


тут можно скачать исходники

Комментариев нет:

Отправить комментарий