TextBox проверка на пустоту, но разрешение нуля - VB
Формулировка задачи:
Здравствуйте, просмотрел все 17 страниц по поиску *textbox*, но не нашел ничего похожего.
Мой вопрос следующий:
Есть величина Hm (высота полета) для нее несколько формул. Переменные в формуле задаются из соответствующих textbox'ов. Так как алгоритм линейный, обычно, если переменная не указана до формулы (ну кроме в описание типа), то компьютер пропускает формулу и идет к следующей, так проходит все и, если есть все величины, решает.
Как делаю я:
- Перевод из строкового в символьный
- Формулы
- Перевод из символьного в строковый и вывод в textbox'сы
Но тут проблема. Компьютер видя переменную, значение которой не задано, дает ей ноль при переводе (все правильно, как я понял, пустота -> 0) и поэтому значение Hm в конце по нулям.
Я поставил ограничение, если textbox не пустой, то переменная равна значению из него.
Но оно не работает. Подскажите, пожалуйста, что не так. То есть необходимо разрешение нуля, но проверка на пустоту, ведь я могу задать значение ноль (может так по условию задачи нужно будет).
К теме, если позволите еще тройку вопросов:
- Есть ли в VB 6 ссылки между формами?
- Можно ли сделать цикл *пока все textbox'сы не заполнятся*
- Есть ли какое-нибудь более удачливое округление, кроме Round, а то оно у меня не всегда работает(криворукий)
Вот пример кода:
Заранее благодарен.
Листинг программы
- Private Sub chet_Click()
- 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
- Hm = ((Vo ^ 2 * Sin(al * TO_RAD) ^ 2)) / (2 * g)
- Hm = (Vyo ^ 2) / (2 * g)
- Hm = (t ^ 2 * g) / 8
- Hm = (Vmax ^ 2 - Vmin ^ 2) / 2 * g
- g1(0).Text = Str(g)
- Al1(1).Text = Str(al)
- L1(1).Text = Str(L)
- Hm1(1).Text = Str(Hm)
- Vo1(1).Text = Str(Vo)
- Vyo1(0).Text = Str(Vyo)
- Vmax1(1).Text = Str(Vmax)
- Vmin1(1).Text = Str(Vmin)
- T1(1).Text = Str(t)
- End Sub
Решение задачи: «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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д