Проблемка с InputBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Shild
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.04.2003 (Ср) 18:43
Откуда: Волгорад

Проблемка с InputBox

Сообщение Shild » 23.04.2003 (Ср) 19:05

Здравствуйте. Совсем недавно начал программировать на VB поэтому не судите строго...
Суть моей проблемы в том, что при использовании такой конструкции:
Код: Выделить всё
Private Sub Text1_LostFocus()
N = Val(Text1.Text)
For I = 1 To N
HI(I) = InputBox("Толщина " & I & "-го слоя грунта, м", I & "-й слой", "")
If HI(I) = "" Then Exit Sub
RI(I) = InputBox("Расчетное сопротивление " & I & "-го слоя грунта по боковой поверхности сваи, кПа", I & "-й слой", "")
If RI(I) = "" Then Exit Sub
Next I
End Sub

получается, что если пользователь вводит данные в InputBox, то все нормально, а вот если оставляет поле ввода пустым для второго InputBox'а, то вылетает ошибка "несовпадение несовпадение типов". Уже по-всякому химичил, но что-то неполучается и все тут :( . Заранее благодарен если кто просветит.

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 23.04.2003 (Ср) 22:39

А куда подставляются значения HI(I) и RI(I), может можно вместо второго значения подставлять какую либо величину по умолчанию.
В общем выложи здесь ту формулу куда ты подставляешь эти значения

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 23.04.2003 (Ср) 23:05

2gjghjc насколько я понял имеется ввиду что при вводе в inputbox пустой строки вылетает ошибка
2Shild попробуй нечто вроде этого
Код: Выделить всё
Dim i As Integer
Dim j As String
j = InputBox("ff")
i = CInt("0" + j)
Ничто так не ограничивает полёт мысли программиста, как компилятор

Shild
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.04.2003 (Ср) 18:43
Откуда: Волгорад

Сообщение Shild » 24.04.2003 (Чт) 6:40

Объясняю какова была задумка. В поле Text1 пользователь вводит какое-либо число (мне заранее неизвестно). Далее, в зависимости от этого числа, столько же раз должны выскочить пара приведенных мною InputBox'ов. Естественно, что то, что вводится в эти input'ы также будет использоваться в дальнейших вычислениях. Значения как я понимаю будут присваиваться HI(1) и RI(1) - для 1-го inputbox, HI(2) и RI(2) для второго inputbox, и тд. И все то вроде прекрасно работает при вводе чисел, но вот при оставлении строки пустой для второго вопроса получается ошибочка. Непонятно... А вообще, может какая светлая голова посоветует другой алгоритм для такого, если так можно сказать, динамического опроса?

ole
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.04.2003 (Пт) 14:48
Откуда: Пятигорск

Сообщение ole » 24.04.2003 (Чт) 7:56

Можно решить так, если лень переделывать алгоритм
Private Sub Text1_LostFocus()
OnError goto metka
N = Val(Text1.Text)
For I = 1 To N
HI(I) = InputBox("Толщина " & I & "-го слоя грунта, м", I & "-й слой", "")
If HI(I) = "" Then Exit Sub
RI(I) = InputBox("Расчетное сопротивление " & I & "-го слоя грунта по боковой поверхности сваи, кПа", I & "-й слой", "")
If RI(I) = "" Then Exit Sub
Next I
exit sub
metka:
' твои действия при ошибки или exit sub
End Sub

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 24.04.2003 (Чт) 8:28

на сколько я понял в InputBox'ах ожидается ввод числа. в таком случае не понятно почему исользуются массивы строкового типа. (а может они вобще Variant) используй для чтения инпутов функцию Val(). если в инпуте будет пусто Val вернет тебе 0. вот и все
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Shild
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.04.2003 (Ср) 18:43
Откуда: Волгорад

Сообщение Shild » 24.04.2003 (Чт) 9:19

Вот !!! Val как раз таки и есть то, что надо. Просто не знал, что val можно использовать вместе с inputbox. Большое всем спасибо за помощь :D .


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 55

    TopList