Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: CL | DM;

Вниз

Помогите, как проверить поля, чтобы там были только цифры   Найти похожие ветки 

 
Ba-ss   (2003-01-07 21:38) [0]

У меня есть поля, куда юзер вводит данные(кол-во инженеров, машин и т.д.). Они либо integer, либо float. Мне нужно сделать защиту от дурака, т.е. чтобы при нажатии кнопки "Проверка" он сообщил юзеру, что тот ввел текст(препод так сделал), и что кол-во инженеров не может быть отрицательным. Как это сделать?


 
Song ©   (2003-01-07 21:55) [1]

try
StrToInt() // или StrToFloat()
except
{ пользователь ввёл текст }
end

А знак определять после того как преобразуешь в число


 
uw ©   (2003-01-07 22:00) [2]

Посмотри, например, такой текст обработчика OnKeyPress для TEdit.

procedure TfmAdjDev.edFloatKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = ".") OR (Key = ",") then
Key := DecimalSeparator;
if NOT (Key IN [BACKSPACE, DecimalSeparator, "0".."9"]) OR
((Key = DecimalSeparator) AND
(Pos(DecimalSeparator, (Sender as TEdit).Text) <> 0))
then
Key := #0;
end;


 
Геннадий ©   (2003-01-07 22:02) [3]

А почему бы не использовать MaskEdit? В его свойство EditMask введи столько девяток, сколько цифр максимум можно вводить пользователю. Щёлкни по этому свойству и нажми F1 для дополнительной информации.


 
Оливейра ©   (2003-01-07 22:09) [4]

А дробным? :-)
uses ComObj, ActiveX;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var V: Olevariant;
i: integer;
TestString: String;
begin
TestString := Trim(InputBox("Ввидите страку чисел или не чисел", "", ""));
V:=CreateOleObject("VBScript.regexp");
V.Pattern := "[^\d]";
i:=V.Test(TestString);
if ((i <> 0) or (TestString = "")) then
ShowMessage("Не число")
else
SHowMessage("Это типа число");
end;

Если не заработает, помогать не буду.
Мой девиз - "А у меня все работает!"


 
Ba-ss   (2003-01-07 22:10) [5]

Извини еще раз, но вот так не получается:
try
nm:=strtoint(var_r.text);
except
ShowMessage("Неправильные данные");
end;
Я что-то не так сделал?


 
Геннадий ©   (2003-01-07 22:19) [6]

Ba-ss (07.01.03 22:10)
Извини еще раз, но вот так не получается:
try
nm:=strtoint(var_r.text);
except
ShowMessage("Неправильные данные");
end;
Я что-то не так сделал?


Если nm это Integer, а var_r - TEdit, то всё должно работать. А какая ошибка?


 
Song ©   (2003-01-07 22:20) [7]

Что именно не получается? Ошибки? не работает? Думаешь, я телепат?


 
Ba-ss   (2003-01-07 22:21) [8]

выдает все прежнее "a" is not valid integer value


 
Song ©   (2003-01-07 22:22) [9]

Надо отключить исключения Дельфи в установках дебаггера. Options - debugger options. Последняя страничка - не останавливаться на исключениях Дельфи.


 
Геннадий ©   (2003-01-07 22:31) [10]

Ba-ss (07.01.03 22:21)
выдает все прежнее "a" is not valid integer value



А от куда это "а" взялось? В твоём примере его нет... Дай полный код для ввода значения - посмотрим.

А ошибки (в try/except) он не будет тебе выдавать только если ты запустишь сам exe-шник, а не в Делфи.


 
Ba-ss   (2003-01-07 22:31) [11]

Всем Огромное спасибо. Если бы не вы, я не знаю чтобы делал. Мне курсовик завтра сдавать. Еще раз спасибо.


 
Song ©   (2003-01-07 22:42) [12]

2Геннадий © (07.01.03 22:31)
>>А ошибки (в try/except) он не будет тебе выдавать только если ты запустишь сам exe-шник, а не в Делфи.
Вовсе нет. Если отключить исключения, их не будет и в IDE тоже.



Страницы: 1 вся ветка

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
3-48920
Mariya
2002-12-21 13:20
2003.01.16
Index


14-49204
Rophex
2002-12-26 09:22
2003.01.16
Dsgnintf.dcu


3-48895
VDenis
2002-12-20 11:13
2003.01.16
Как сделать


6-49186
Troll
2002-11-15 15:53
2003.01.16
Плиzzz. Помогите с WEbApplications!!


3-48927
Roma111
2002-12-20 09:01
2003.01.16
Зависание при StartTransact