![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите, как проверить поля, чтобы там были только цифры [D6, WinXP]
Ba-ss © (2003-01-07 21:38:00)У меня есть поля, куда юзер вводит данные(кол-во инженеров, машин и т.д.). Они либо integer, либо float. Мне нужно сделать защиту от дурака, т.е. чтобы при нажатии кнопки "Проверка" он сообщил юзеру, что тот ввел текст(препод так сделал), и что кол-во инженеров не может быть отрицательным. Как это сделать?
Song (2003-01-07 22:42:00) [1]2Геннадий © (07.01.03 22:31)
>>А ошибки (в try/except) он не будет тебе выдавать только если ты запустишь сам exe-шник, а не в Делфи.
Вовсе нет. Если отключить исключения, их не будет и в IDE тоже.
Геннадий (2003-01-07 22:31:00) [2]Ba-ss (07.01.03 22:21)
выдает все прежнее "a" is not valid integer value
А от куда это "а" взялось? В твоём примере его нет... Дай полный код для ввода значения - посмотрим.
А ошибки (в try/except) он не будет тебе выдавать только если ты запустишь сам exe-шник, а не в Делфи.
Ba-ss (2003-01-07 22:31:00) [3]Всем Огромное спасибо. Если бы не вы, я не знаю чтобы делал. Мне курсовик завтра сдавать. Еще раз спасибо.
Song (2003-01-07 22:22:00) [4]Надо отключить исключения Дельфи в установках дебаггера. Options - debugger options. Последняя страничка - не останавливаться на исключениях Дельфи.
Ba-ss (2003-01-07 22:21:00) [5]выдает все прежнее "a" is not valid integer value
Song (2003-01-07 22:20:00) [6]Что именно не получается? Ошибки? не работает? Думаешь, я телепат?
Геннадий (2003-01-07 22:19:00) [7]Ba-ss (07.01.03 22:10)
Извини еще раз, но вот так не получается:
try
nm:=strtoint(var_r.text);
except
ShowMessage("Неправильные данные");
end;
Я что-то не так сделал?
Если nm это Integer, а var_r - TEdit, то всё должно работать. А какая ошибка?
Ba-ss (2003-01-07 22:10:00) [8]Извини еще раз, но вот так не получается:
try
nm:=strtoint(var_r.text);
except
ShowMessage("Неправильные данные");
end;
Я что-то не так сделал?
Оливейра (2003-01-07 22:09:00) [9]А дробным? :-)
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;
Если не заработает, помогать не буду.
Мой девиз - "А у меня все работает!"
Геннадий (2003-01-07 22:02:00) [10]А почему бы не использовать MaskEdit? В его свойство EditMask введи столько девяток, сколько цифр максимум можно вводить пользователю. Щёлкни по этому свойству и нажми F1 для дополнительной информации.
uw (2003-01-07 22:00:00) [11]Посмотри, например, такой текст обработчика 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;
Song (2003-01-07 21:55:00) [12]try
StrToInt() // или StrToFloat()
except
{ пользователь ввёл текст }
end
А знак определять после того как преобразуешь в число