Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

формат double

657  
lubopitniy гость08.08.08 11:18
NEW 08.08.08 11:18 
кто знает команду, как ограничить количество знаков полсе запятой когда вводишь double число в диалоге?
#1 
Murr коренной житель08.08.08 13:09
Murr
NEW 08.08.08 13:09 
в ответ lubopitniy 08.08.08 11:18
Написать фильтр для события [OnKeyPresed]
#2 
lubopitniy гость08.08.08 21:34
NEW 08.08.08 21:34 
в ответ Murr 08.08.08 13:09
надо чтоб нельзя больше 3 знаков после запятой вводить
как формат ограничить
#3 
gendy Dinosaur08.08.08 22:55
gendy
NEW 08.08.08 22:55 
в ответ lubopitniy 08.08.08 21:34
в упоманутой функции обработки события читаем поле ввода как строку , ищем запятую и считаем символы после неё , если три есть запрещаем ввод цифр

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#4 
NightWatch коренной житель12.08.08 08:56
NightWatch
NEW 12.08.08 08:56 
в ответ gendy 08.08.08 22:55
Поскольку пользователь может ввести не только цифры, но и и другие символы, проще будет использовать регулярные выражения.
#5 
Murr коренной житель12.08.08 14:45
Murr
NEW 12.08.08 14:45 
в ответ NightWatch 12.08.08 08:56
проще будет использовать регулярные выражения.
-----
OnKeyPress, вообще то, обрабатывается ДО добавления символа... так что проверке подлежит один символ и по результату событие отменяется или продолжается стандартная обработка.
#6 
NightWatch коренной житель13.08.08 09:06
NightWatch
NEW 13.08.08 09:06 
в ответ Murr 12.08.08 14:45
Пользователь ввел 0.1, а потом хочет ввести "-" или ".". Минус или точка - допустимые символы для double, но когда они стоят на своих местах. Прикинь, сколько кода нужно, чтобы проверить все варианты, тем более, что в регулярных выражениях все это уже написано. Против OnKeyPress я ничего не сказал. Регулярные выражения прекрасно работают и там.
#7 
gendy Dinosaur13.08.08 09:50
gendy
13.08.08 09:50 
в ответ NightWatch 13.08.08 09:06
не в каждом языке есть регулярные выражения, и того кто спрашивает такие вещи лучше регулярными выражениями пока не загружать.
OnKeyPress проверяет вводимый символ. не строку . гораздо проще проверить символ на допустимость , чем делать проверку строки ,
ну а допустимости всех символов ещё ругнётся функция , которая будет приводить к double (хотя с 3 символами хватило бы и float)

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#8 
Murr коренной житель13.08.08 13:52
Murr
NEW 13.08.08 13:52 
в ответ NightWatch 13.08.08 09:06
Прикинь, сколько кода нужно, чтобы проверить все варианты,
тем более, что в регулярных выражениях все это уже написано.
------
В зависимости от задачи. Mожно обойтись парой строк:
if ((newStatus = statusArray[oldStatus,symbol]) == 0) CancelEvent();
oldStatus = newStatus;
P.S. statusArray - уже давно написана... :)
#9 
NightWatch коренной житель14.08.08 09:13
NightWatch
NEW 14.08.08 09:13 
в ответ gendy 13.08.08 09:50
В ответ на:
не в каждом языке есть регулярные выражения
Например, в C# их нет, но зато есть соответствующий класс в .NET Framework.
В ответ на:
того кто спрашивает такие вещи лучше регулярными выражениями пока не загружать
Они и не сложные.
В ответ на:
ругнётся функция , которая будет приводить к double
Осторожно. Например, в C# double d = double.Parse("4..7.5"); сработает на ура и без исключений. Но каков будет результат с ходу не скажешь.
#10