Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!
  • Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

Скратување на програмски код

Паланчански

On your way to fame
18 август 2019
828
732
Има ли опција да се скрати програмскиот код?
На пример:

Dim a1 As Integer = Val(TB1.Text)
Dim a2 As Integer = Val(TB2.Text)
Dim a3 As Integer = Val(TB3.Text)
............................................................
Dim a81 As Integer = Val(TB81.Text)

Или:

If a1 > 9 Then TB1.Text = ""
If a2 > 9 Then TB2.Text = ""
If a3 > 9 Then TB3.Text = ""
....................................................
If a81 > 9 Then TB81.Text = ""

Редовите се повторуваат до недоглед, дали постои можност со некој код како
For Each
...................
Next
или нешто слично.

Напомена:
TB значи TextBox.
 
Последна промена:

xhktw

x
2 август 2009
1.450
1.916
xhktw's setup  
Processor & Cooler
Ryzen 7 5700X3D / Macbook Pro M4 14' 16/512
Motherboard
MSI B350 Tomahawk
Storage
Samsung 870 EVO 1 TB SSD
PSU
Gigabyte Odin 1200W PSU
RAM
G.Skill DDR4-3200 64GB
Video card
PNY 3090 24GB
Case
Logic Portos Case
Mouse
DeathAdder V3 Pro
Keyboard
AK820Pro / ROG Falchion / Custom 3D Printed
Monitor
34" MSI MAG342CQPV 100Hz / AOC 240hz IPS
OS
macOS Sequoia / Arch Linux
C:
For i = 1 To 81
    If eval("a" & i) > 9 Then eval("TB" & i).Text = ""
Next i

Или со array:

C:
Dim values(1 To 81) As Integer
Dim textBoxes(1 To 81) As TextBox

For i = 1 To 81
    If values(i) > 9 Then textBoxes(i).Text = ""
Next i
 

Паланчански

On your way to fame
18 август 2019
828
732
Нешто ми шкрипи. Не ја препознава синтаксата eval.
Можеби затоа што работам на VB 8 или нешто друго е во прашање.

eval.png
 

viktorf

Intern
27 февруари 2022
5
0
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb In textBoxes
If a(i) > 9 Then tb.Text = ""
Next


probaj
 

gdamjan

Unstoppable
3 април 2008
3.873
3.084
Скопје
damjan.softver.org.mk
gdamjan's setup  
Processor & Cooler
AMD Ryzen 5 Pro 4650G / Cooler Master Hyper 212 Black
Motherboard
MSI MAG B550m Mortar Wifi
Storage
NVME: 1TB AData XPG SX8200 Pro / HDD: 2x 2TB Toshiba P300
PSU
Gigabyte G750H
RAM
G. SKILL Ripjaws V Series 2x 16GB / DDR4 3200Mhz/CL16
Video card
Vega 7 on APU
Case
Bequiet! PureBase 500
Mouse
Logitech MX Anywhere 2S
Keyboard
ThinkPad USB Keyboard With TrackPoint (sk-8855)
OS
Arch Linux
Наместо да ги штракаш TB1, TB2… рачно како пештерски човек (joke), можеш да ги креираш самите text box-ови програматски, во for loop.
така ќе си ги имаш во array и после ќе работиш врз нив одеднаш.
 

Паланчански

On your way to fame
18 август 2019
828
732
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb In textBoxes
If a(i) > 9 Then tb.Text = ""
Next


probaj
Недекларирано tb, недекларирано a, недекларирано i...
Очигледно денес не ми е денот.
Наместо да ги штракаш TB1, TB2… рачно како пештерски човек (joke), можеш да ги креираш самите text box-ови програматски, во for loop.
така ќе си ги имаш во array и после ќе работиш врз нив одеднаш.
Е, тоа за мене веќе е виша математика (пардон, шпанско село).
 

bxxxn

Practice makes perfect
11 март 2011
1.630
1.775
'мала корекција од погоре

Dim i as integer = 0
Dim a(10000) as integer
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb As TextBox In textBoxes
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next

или доколку сакаш да не ги предефинираш текст боксовите

Dim i as integer = 0
Dim a(10000) as integer

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next
 
Последна промена:

Паланчански

On your way to fame
18 август 2019
828
732
'мала корекција од погоре

Dim i as integer = 0
Dim a(10000) as integer
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb As TextBox In textBoxes
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next

или доколку сакаш да не ги предефинираш текст боксовите

Dim i as integer = 0
Dim a(10000) as integer

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next
Првото е во ред, второто покажува грешка. Не го признава OfType како член на Me.Controls
 

bxxxn

Practice makes perfect
11 март 2011
1.630
1.775
Пробај со try...catch за доделување на вредност на текст боксот, инаку претпоставувам дека кодот ти е за VB.net, каде што Controls.OfType е ОК?

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
Try
If a(i) > 9 Then tb.Text = ""
Catch
Finally
End Try
Next
 
Последна промена:

Паланчански

On your way to fame
18 август 2019
828
732
Пробај со try...catch за доделување на вредност на текст боксот, инаку претпоставувам дека кодот ти е за VB.net, каде што Controls.OfType е ОК?

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
Try
If a(i) > 9 Then tb.Text = ""
Catch
Finally
End Try
Next
Не оди ни така. Привремено се откажувам.
Во секој случај благодарам.
 

Нови мислења

Последни Теми

Статистика

Теми
49.170
Мислења
1.007.282
Членови
36.674
Најнов член
Zl4tk0

ит маркет

На врв Дно