TextBox проверка на пустоту, но разрешение нуля - VB
Формулировка задачи:
Здравствуйте, просмотрел все 17 страниц по поиску *textbox*, но не нашел ничего похожего.
Мой вопрос следующий:
Есть величина Hm (высота полета) для нее несколько формул. Переменные в формуле задаются из соответствующих textbox'ов. Так как алгоритм линейный, обычно, если переменная не указана до формулы (ну кроме в описание типа), то компьютер пропускает формулу и идет к следующей, так проходит все и, если есть все величины, решает.
Как делаю я:
- Перевод из строкового в символьный
- Формулы
- Перевод из символьного в строковый и вывод в textbox'сы
Но тут проблема. Компьютер видя переменную, значение которой не задано, дает ей ноль при переводе (все правильно, как я понял, пустота -> 0) и поэтому значение Hm в конце по нулям.
Я поставил ограничение, если textbox не пустой, то переменная равна значению из него.
Но оно не работает. Подскажите, пожалуйста, что не так. То есть необходимо разрешение нуля, но проверка на пустоту, ведь я могу задать значение ноль (может так по условию задачи нужно будет).
К теме, если позволите еще тройку вопросов:
- Есть ли в VB 6 ссылки между формами?
- Можно ли сделать цикл *пока все textbox'сы не заполнятся*
- Есть ли какое-нибудь более удачливое округление, кроме Round, а то оно у меня не всегда работает(криворукий)
Вот пример кода:
Заранее благодарен.
Решение задачи: «TextBox проверка на пустоту, но разрешение нуля»
textual
Листинг программы
Dim g, al, t, L, Hm, Vo, TO_RAD, TO_DEG, Vyo, Vmax, Vmin 'As Double TO_RAD = 3.14159265358979 / 180 TO_DEG = 1 / TO_RAD If g1(0).Text <> "" Then g = Val(g1(0).Text) End If If Al1(1).Text <> "" Then al = Val(Al1(1).Text) End If If L1(1).Text <> "" Then L = Val(L1(1).Text) End If If Hm1(1).Text <> "" Then Hm = Val(Hm1(1).Text) End If If Vo1(1).Text <> "" Then Vo = Val(Vo1(1).Text) End If If T1(1).Text <> "" Then t = Val(T1(1).Text) End If If Vyo1(0).Text <> "" Then Vyo = Val(Vyo1(0).Text) End If If Vmax1(1).Text <> "" Then Vmax = Val(Vmax1(1).Text) End If If Vmin1(1).Text <> "" Then Vmin = Val(Vmin1(1).Text) End If If Not IsEmpty(Vo) And Not IsEmpty(al) And Not IsEmpty(g) Then Hm = ((Vo ^ 2 * Sin(al * TO_RAD) ^ 2)) / (2 * g) ElseIf Not IsEmpty(Vyo) And Not IsEmpty(g) Then Hm = (Vyo ^ 2) / (2 * g) ElseIf Not IsEmpty(t) And Not IsEmpty(g) Then Hm = (t ^ 2 * g) / 8 ElseIf Not IsEmpty(Vmax) And Not IsEmpty(Vmin) And Not IsEmpty(g) Then Hm = (Vmax ^ 2 - Vmin ^ 2) / 2 * g Else MsgBox "Некорректные данные" End If
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д