Самый короткий програмный код для числового текстового поля.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Ефрейтор
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 11.02.2005 (Пт) 12:43
Откуда: Алтай

Самый короткий програмный код для числового текстового поля.

Сообщение Ефрейтор » 29.06.2006 (Чт) 16:58

Люди добрые. Тут такая тема. Имеется текстовое поле на форме. Надо что бы пользователь мог ввести туда только число возможно десятичное. Конечно код я написал с кучей проверок. Но как то он охально выглядет. Может кто когданить ктонить решал эту проблему и поможет страждущему каким нибудь простым коротким програмным кодом?
Заранее признателен.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 29.06.2006 (Чт) 17:07

if double.tryparse(text1.text) then
'ok
else
'undo
end if
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

SpawnProduction
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.06.2006 (Чт) 16:36
Откуда: Россия, Москва, Зеленоград

Сообщение SpawnProduction » 29.06.2006 (Чт) 17:08

Можно также использовать регулярные выражения... там будет одна проверка и всё.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 29.06.2006 (Чт) 17:59

SpawnProduction
А в коде который написал Sebas сколько проверок?

SpawnProduction
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.06.2006 (Чт) 16:36
Откуда: Россия, Москва, Зеленоград

Сообщение SpawnProduction » 29.06.2006 (Чт) 19:16

Ramzes
одна..
Я не претендую на то, что мой вариант лучше или хуже, однако, он является более рациональным решением, потому как позволяет подогнать решение под любой тип, а те только Double, Bool, int etc.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 29.06.2006 (Чт) 19:25

SpawnProduction

ты вопрос читал?

SpawnProduction
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.06.2006 (Чт) 16:36
Откуда: Россия, Москва, Зеленоград

Сообщение SpawnProduction » 29.06.2006 (Чт) 21:25

Ramzes
да... я не в первый раз на форуме... на одном даже модератор...

Хороший программист всегда ищет решение, которое актуально не только для данной ситуации. Если в том текстовом поле в итоге понадобится ещё что-то проверять, то придётся задать ещё вопрос по тому, как сделать короткий код для проверки других типов данных. Если функция, которую ты делаешь - универсальна, то это даже лучше, чем не универсальная, пусть она и использует чуть больше ресурсов, чем в другом варианте (за исключением случаев, когда стоит чёткая постановка задачи заказчиком)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.06.2006 (Чт) 21:32

Не понимаю, чем регэксп универсальнее: его всё равно придётся заново составлять для каждого конкретного случая.
При чём не факт, что его с первого раза удастся составить верно.
Зачем самого себя перехитрять, когда уже есть готовая, встроенная в среду процедура проверки?
Изображение

SpawnProduction
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.06.2006 (Чт) 16:36
Откуда: Россия, Москва, Зеленоград

Сообщение SpawnProduction » 29.06.2006 (Чт) 22:04

tyomitch писал(а):Не понимаю, чем регэксп универсальнее: его всё равно придётся заново составлять для каждого конкретного случая.
При чём не факт, что его с первого раза удастся составить верно.

Выражение regex это всего лишь текст, так что его удобно хранить... и при желании можно откуда-нить подгрузить. насчёт неудачно составления, хм... ну, у кого руки... в общем понятно.
tyomitch писал(а):Зачем самого себя перехитрять, когда уже есть готовая, встроенная в среду процедура проверки?

Ну-ка отпарсите номер телефона стандартной функцией... такой пример даётся во всех статьях по регэкспу...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.06.2006 (Чт) 22:34

Ну-ка отпарсите айпи-адрес регэкспом...

Когда (если) удастся -- переходите к типу Single, с поддержкой эксп. формата (типа 1.5E6).
Желательно не подглядывая в примеры, которые даются во всех статьях по регэкспу...

Если удастся с первого раза составить оба регэкспа верно -- тогда будете утверждать о "недостаточной универсальности" методов TryParse.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.06.2006 (Пт) 3:19

У меня вопрос.

Ситуация.
Пользователь имеет национальным десятичным разделителем запятую, и начинает вводить double. С запятой. После ввода запятой пользователь меняет десятичный разделитель на точку и нажимает ОК.
Происходит что?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.06.2006 (Пт) 8:55

Господа, может я чета не понимаю, но по моему, для данной ситуации, проще использовать MaskedTextBox или NumericUpDown
на крайняк сделать IsNumeric-проверку
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 30.06.2006 (Пт) 13:05

GSerg писал(а):У меня вопрос.

Ситуация.
Пользователь имеет национальным десятичным разделителем запятую, и начинает вводить double. С запятой. После ввода запятой пользователь меняет десятичный разделитель на точку и нажимает ОК.
Происходит что?


что? обработать культурой
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 72

    TopList