Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:39 23.04.24 
Клубове/ Компютри и Интернет / Visual Basic Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема проверка на входящи данни
Автор Sargonlll ()
Публикувано12.09.12 13:11  



Направих си една програма, която ми върши отлична работа. Сега се опитвам да я облагородя малко. Искам да вградя проверка за коректност на входящите данни. Повечето от тях трябва да са положителни числа. Използвам VB 2008 Express Edition, който незнайно защо е с изключително орязан вътрешен хелп.

Данните се извличат от текстови полета, напр. DTB.Text. Забелязва се, че букви и др. подобни се възприемат като 0, а ако има число с някаква буква след него, се възприема само числото. Направих няколко проби, но все още не съм доволен от резултата. Това е базовия код за проверка:

If Val(DTB.Text) <> DTB.Text Or Val(DTB.Text) <= 0 Then
MsgBox("Incorrect input data!", vbExclamation)
DTB.BackColor = Color.Red
Exit Sub
Else
DTB.BackColor = Color.White
End If

Така получавам съобщение за грешка в първия ред при въвеждане на буква (вместо цифра): Conversion from string "i" to type 'Double" is not valid. Добре, това е разбираемо. Но, след като не желае да преобразува буквите в число, защо без проверка ги възприема за 0 и програмата смята с тях (вместо още тогава да даде грешка).

Друг вариант, който опитах, е (промяна на само първия ред):

If Str(Val(DTB.Text)) <> DTB.Text Or Val(DTB.Text) <= 0 Then

Логиката беше, че след преобразуване на буква в число, тя ще се превърне в 0, после в стринг "0". Който вече ще е различен от първоначалната буква, напр. "I". Но, започна да излиза съобщение за некоректност, независимо какво въвеждам...

Накрая, опитах и (промяна на сомо първия ред):

If Str(Val(DTB.Text)) <> Str(DTB.Text) Or Val(DTB.Text) <= 0 Then

Получих съобщение за грешка: Argument 'Number' cannot be converted to a numeric value.

Просто не знам вече какво точно да направя. Целта е, ако се въведе нещо различно от положително число, да се изведе съобщение, да се оцвети фона за въвеждане и да не се продължи с изчисленията.



Цялата тема
ТемаАвторПубликувано
* проверка на входящи данни Sargonlll   12.09.12 13:11
. * Re: проверка на входящи данни nepukis   21.09.12 13:54
. * Re: проверка на входящи данни Sargonlll   24.09.12 12:58
. * Re: проверка на входящи данни nedoga   24.10.12 21:08
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.