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

Вниз

Проверка на ввод нечисловых символов и запятой.   Найти похожие ветки 

 
{RASkov} ©   (2008-09-24 14:27) [40]

> [33] Neket   (24.09.08 14:15)

try
E:=StrToFloat(Edit.Text);
except
ShowMessage("Ошибка ввода числа "+Edit.Text);
Edit.SetFocus;
end;


А если использовать Val то можно и курсор установить на место первого ошибочного символа...


 
Dennis I. Komarov ©   (2008-09-24 14:28) [41]


> Dennis I. Komarov ©   (24.09.08 14:21) [38]
> возможно вы имели ввиду  brain.dll ?

ее самую...

try exept - знаешь что такое?
в [2] так же есть tryStrToFloat, осталось за малым - почитать хелп, подключив библиотеку...


 
Neket   (2008-09-24 14:31) [42]

Ладно мужики. Спасибо. Реально благодарен всем. Просто есть люди которые программирование на хлеб зарабатываю, а есть те кому приходится время от времени ввиду того что начальство жлобится на новую штатную единицу, писать самому. Вот и такая разница в знаниях. Ещё раз всем спасибо.


 
Vlad Oshin ©   (2008-09-24 14:32) [43]

procedure TForm1.Edit1Change(Sender: TObject);
var
a:double;
i:integer;
s:string;
begin
 if Length(edit1.Text)=0 then exit;
 if not(trystrtofloat(Edit1.Text,a)) then
 begin
   ShowMessage("Неправильное значение. Последний символ удален");
   i:=length(edit1.Text);
   s:=edit1.Text;
   setlength(s,i-1);
   edit1.Text:=s;
 end;
end;


 
{RASkov} ©   (2008-09-24 14:34) [44]

> [43] Vlad Oshin ©   (24.09.08 14:32)

:)
Проще тогда и в самом деле вести контроль допустимых символов. "Легче" алгоритм будет )


 
MsGuns ©   (2008-09-24 14:38) [45]

function CheckSymbolForFloatText(Edit: TEdit; Key: Char): Char;
begin
 result := Key;
 with Edit do
   if not (Key in ["0".."9","-",DecimalSeparator,Char(VK_BACK),Char(VK_TAB)]) or
      ((Key=",") and (Pos(Key,Text)>0)) or
      ((Key="-") and ((Pos(Key,Text)>0) or (SelStart>0))) then result := #0;
end;

В OnKeyPress едита

 Key := CheckSymbolForFloatText(TEdit(Sender),Key)

В  OnChange эдита проверка TryStrToFloat


 
MsGuns ©   (2008-09-24 14:41) [46]

Пардон, вместо запятой при проверке надо поставить сепаратор


 
Anatoly Podgoretsky ©   (2008-09-24 15:03) [47]


> А если использовать Val то можно

Не надо, поскольку системно независима, подходит только для импорта/экспорта.


 
Anatoly Podgoretsky ©   (2008-09-24 15:17) [48]

> Neket  (24.09.2008 14:07:31)  [31]

Ты теперь в другую крайность падаешь.
Никакой искуственный ителлект и прочее не требуется, тип поля известен или целочисленный, или с плавающей запятой и попытка преобразование сразу скажет дурак пользователь или нет, не говоря уже о случаях автоматической проверки по маске, тогда уйти из поля нельзя будет. УЖАС.

Не надо ограничивать пользователя, до закрытия формы, может я хочу сформировать поле коипируя его части из других мест, например из других полей той же формы и запрет на выход не позволит это сделать.
И прикинь, что подумает пользователь - кто из вас двоих дурак?


 
Anatoly Podgoretsky ©   (2008-09-24 15:18) [49]

> Neket  (24.09.2008 14:20:37)  [37]

Как будет оповещен, дело не в проверке - дело в оповещение?



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

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

Наверх




Память: 0.55 MB
Время: 0.014 c
3-1208416193
Раиса
2008-04-17 11:09
2008.11.02
Выбрать записи ближайшие к определенному интервалу


15-1221033743
*Pavel
2008-09-10 12:02
2008.11.02
Права на папки в домене Windows 2003


15-1220722274
Dmitry S
2008-09-06 21:31
2008.11.02
Недокументированая возможность TStringList.Find


2-1222147865
vegarulez
2008-09-23 09:31
2008.11.02
Вопрос про хук.


1-1201861006
Still Swamp
2008-02-01 13:16
2008.11.02
Обшуршивание компонент на предмет строк