Member 12860952 Ответов: 1

Значение Power1 равно нулю после for next VB.NET


Dim Guc1....Guc59 as decimal

Guc1=Val(TextBox5.Text)*Val(Textbox98.Text)
  . 
  .
  .
Guc59=Val(TextBox42.Text)*Val(Textbox12.Text)

For i = 1 To 59 Step 2

        Dim txt As TextBox = CType(TabControlPanel1.Controls("TextBoxX" & i), TextBox)
        Dim guc As Decimal = CType(("Guc".ToString & i), Decimal)

        Hız1 = Val(txt.Text) * RollinRadius * 3.14 * 3.6 / (Val(TextBox1.Text) * Val(TextBox33.Text) * 30)


        Power1 = guc * 3.14 / (30 * 1000) *2  *3)

        ListBox2.Items.Add(Power1)


    Next


Что я уже пробовал:

Не могли бы вы помочь мне решить проблему Power1 zerp?
Я думаю, что ctype здесь неверен.

1 Ответов

Рейтинг:
12

Ralf Meier

Немного больше объяснений было бы полезно для вашего вопроса ...

Я бы сделал следующее :
- вместо использования 59 отдельных переменных (Guc1 ... Guc59) использовать массив (Dim Guc(59) Как десятичный)
теперь вы можете индексировать каждый элемент массива внутри вашего цикла.
- вы действительно уверены, что каждое текстовое поле содержит числовое значение ?

Однако-ваш код может выглядеть так :

Dim Guc (59) as decimal

Guc(1) = Val(TextBox5.Text)*Val(Textbox98.Text)
.
.
.
Guc(59) = Val(TextBox42.Text)*Val(Textbox12.Text)

For i = 1 To 59 Step 2
   Dim txt As TextBox = CType(TabControlPanel1.Controls("TextBoxX" & i), TextBox)
   Hız1 = Val(txt.Text) * RollinRadius * 3.14 * 3.6 / (Val(TextBox1.Text) * Val(TextBox33.Text) * 30)

   Power1 = guc(i) * 3.14 / (30 * 1000) *2 *3)  ' <== instead of 3.14 you could also use Math.Pi

   ListBox2.Items.Add(Power1)
Next


Дополнительный :
Если вы дадите своим текстовым полям (а также другим элементам управления) имена, соответствующие входным данным, которые в них вносятся, ваш текст станет гораздо более понятным и читаемым.
Как вы думаете, будете ли вы знать через несколько месяцев, какой ввод должен быть сделан в TextBox42 (например) ?


Member 12860952

Большое спасибо @Ralf Meier, это решение работает для меня, использование массива, я думаю, гораздо более разумно.

Ralf Meier

Пожалуйста.
Спасибо за Ваш голос ...