![]() |
|
#1
|
|||
|
|||
![]() Как сделать так, чтобы вводить можно было только значения типа Integer в какую-нибудь форму? ... маски не помогают(
|
#2
|
||||
|
||||
![]() Код:
if not (Key in ['0'..'9', #8]) then // если Key не цифра или backspase Key := #0; // делаем пустой |
#3
|
|||
|
|||
![]() Но это же все равно будет считаться стринговой переменной и эти ограничение как маска ...
|
#4
|
|||
|
|||
![]() Есть компоненты типа TSpinEdit, TdxSpinEdit скорее всего именно то, что тебе надо.
Последний раз редактировалось Asinkrit, 30.12.2009 в 18:40. |
#5
|
|||
|
|||
![]() В общем, ситуация такая: есть некое поле, в которое пользователь должен ввести целое число (с ограничениями все нормально)) ... но при вводе любого символа в Edit, все будет являться текстом ... а мне потом нужно приравнять то, что ввел кто-то к переменной Integer и в этом то все проблема ...
|
#6
|
|||
|
|||
![]() Непонятно мне в чем проблема у тебя) установи вышеназванные компоненты, в них число будет и числом, и текстом, либо отробатывай ситуацию, когда пользователь не то вводит, есть к примеру хорошая функция
Код:
function TryToStrToInt(const S:String; out Value:Integer):boolean; Код:
if TryStrToInt(Edit1.text, N) then ;//что-то считаем else ShowMessage('Введите правильно число!'); Последний раз редактировалось Asinkrit, 30.12.2009 в 19:12. |
#7
|
|||
|
|||
![]() спасибо за ответ, сейчас опробую)
|
#8
|
||||
|
||||
![]() Ну или как пример более простого способа (тем более, вроде как, с корректностью ввода ты говоришь всё нормально):
i := StrToInt('55'); Нет повести печальнее на свете, чем повесть о заклиневшем Resete. ![]() |
#9
|
|||
|
|||
![]() я вот так сделал) ... правда, если ввод неверный, то последнее сообщение не выводится, а просто прога вылетает ...
Код:
Try StrToInt(Edt2.text); ... except on Exception: EConvertError do ShowMessage('Введите правильно число!'); |
#10
|
|||
|
|||
![]() но тут по крайней мере маски помогают)
|
#11
|
|||
|
|||
![]() блин, в cmd все прекрасно работает, а тут в файл не пишется зашифрованной сообщение ... может, кто-нибудь знает, в чем дело?
Код:
procedure TForm1.btn1Click(Sender: TObject); begin AssignFile(F, 'Shifr.txt'); AssignFile(e, 'Zashifrovano.ppc'); if IOResult<>0 then Erase(e); edt1.text:=S; b:= length(s); Try StrToInt(Edt2.text); except on Exception: EConvertError do ShowMessage('Введите правильно число!'); end; for I := 1 to b do begin u:=u+1; if s[i]=chr(120) then a[i]:=chr(97) else if s[i]=chr(121) then a[i]:=chr(98) else if s[i]=chr(122) then a[i]:=chr(99) else if s[i]=chr(32)then a[i]:=chr(36) else a[i]:=chr(ord(s[i])+t); y[u]:=a[i]; end; Rewrite(f); for u:=1 to b do write(f, y[u]); CloseFile(f); if FileExists('Zashifrovano.ppc') then Erase(e); Rename(f, 'Zashifrovano.ppc'); end; |