Технологии

Нужно сделать запрет на ввод букв, только цифры. - вопрос №2754195

procedure TForm6.Button1Click(Sender: TObject);
Label lb1;
var i,a,b:integer;
key:char;
begin
ShowMessage('Privet parthner!'+#13+'Я рад, что вы состязаетесь со мной!'
+#13+#13+'Отгадайте мое любимое число!'+#13+'Для справки: оно меньше тысячи.');
lb1: Randomize;
b:=Random(1000);
i:=0;
a:=Round(StrToFloat(InputBox('Ввод числа','Введите число','')));
Repeat
if a<b then a:=Round(StrToInt(InputBox('Ввод числа','Больше','')));
if a>b then a:=Round(StrToInt(InputBox('Ввод числа','Меньше','')));
i:=i+1;
if not (key in ['A'..'Z']) then begin ShowMessage('Только цифры!');
end;
until a=b;
case i of
1..9:ShowMessage('Это случайность!');
10:ShowMessage('Чудесно!');
11,12:ShowMessage('Очень хорошо!');
13,14:ShowMessage('Посредственно!');
else ShowMessage('Удачно!');
end;
If MessageDlg('Сыграем еще?',mtInformation,[mbYes,mbNO],0)=mrYes
then goto lb1;
ShowMessage('Пока.');
end;

end.

февраль 1, 2018 г.

  • Всего ответов: 1

  • Константин - аватарка

    Константин

    4-й в

    InputBox стандартный элемент, вы не можете вмешаться в его работу, если не имеете его исходного текста

    надо или вводить дополнительную проверку попытки парсинга в числовое значение, и в случае ошибки сообщать пользователю

    или создать свой контрол, в режиме диалога, повторяющий общую функциональность InputBox, но уже в нем выполнять ввод по своим правилам — хоть посимвольно, игнорируя «не цифры», хоть строками с сообщением об ошибке

    а простого решения «одной фразой подсказки» в данном случае просто нет

    ps

    все еще хитрее - большинство языков под винду, для элеметов типа InputBox, MsgBox, а так же диалогов типа выбора файла и подобных — вызывают таковые из самой системы, где они уже давно существуют.

    вот если бы вы на форме использовали для ввода элемент типа TextBox, у него наверняка должны быть события и свойства

    в свой свойствах может быть маска для валидации, в событиях — события связаные с валидацией (вариант с маской вообще самый простой)

    я давно не работаю с делфи, 99% с C# но в этих вопросах принципы общие

    так вот «валидация» — это и есть механизм обеспечения ограничений для данного поля ввода. это есть так же во всех современных средствах программирования, где есть GUI

    в этом случае достаточно было бы разобраться с валидацией, а освоение виртуозного управления процессом ввода оставить на потом

    февраль 1, 2018 г.