Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

трансформация строки в число ... [D7, Win2k, WinXP]


Malamba ©   (2005-11-29 13:09:00) 

Братцы, подскажите по-быстрому, не могу вспомнить, как делал и делал ли вообще:

трансформирую строку в денежку
cKol = CCur(MyTextBox.Text)

юзер вводит число - нормально
юзер вводит запятую - нормально
юзер вводит точку - ненормально
юзер звереет и вводит текстъ - ужас

Кто как делает:
проверять каждый символ, перебегая по всей строке в поисках вредных символов,
обрабатывать error с указанием пользователю, что так делать нехорошо, или еще как?


Ega23   (2005-11-29 16:35:00) [1]


> Leonid Troyanovsky ©   (29.11.05 15:56) [6]


Да мне не надо. Я обычно потом ещё одну проверку делаю. Когда на "ОК" нажали.
Просто код в [1] спасает в 95% случаев.


Leonid Troyanovsky   (2005-11-29 15:56:00) [2]


> Ega23 ©   (29.11.05 15:35) [5]

> От вставки из буфера всё равно не защищает.


http://groups.google.com/group/borland.public.delphi.vcl.components.writing/msg/41b62f85dd405cdf

--
Regards, LVT.


Ega23   (2005-11-29 15:35:00) [3]


> Begin   (29.11.05 15:10) [4]


От вставки из буфера всё равно не защищает.


Begin   (2005-11-29 15:10:00) [4]

Денежных значений тоже бывает меньше нуля... :)

if
(not (Key in ['0'..'9', DecimalSeparator, '-', #8, #46, #37, #9, #13])) or
((Key = '.') and (Pos('.',Text) > 0)) or
((Key = '-') and ((SelStart <> 0) or (Pos('-',Text) > 0)))
then Key:=#0


Ega23   (2005-11-29 14:02:00) [5]


> Да, это оно, обработка нажатия клавишы.
>


Это не совсем оно. Не защищает от вставки из буфера, от ввода строки '123.123.123' и отрицательных чисел.


Malamba   (2005-11-29 13:48:00) [6]

Да, это оно, обработка нажатия клавишы.

Спасибо.


Ega23   (2005-11-29 13:13:00) [7]


procedure TFClassStates.NumericEditKeyPress(Sender: TObject;
 var Key: Char);
begin
 if not (Key in ['0'..'9', DecimalSeparator, #8]) then Key:=#0;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо