Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB: Listbox ongelma

Toitsu [20.11.2006 14:46:11]

#

Eli minulla on listbox, jossa on alekkain numeroita. Luuppaan listiä läpi ja if lausekkeella katson, lisätäänkö luku toiseen vai vähennetäänkö se siitä. Nyt kuitenkin aloituksessa on joku väärin, sillä ensimmäinen rivi jää laskuista pois kokonaan ja vika varmaan on syntaksissa:

For i = 0 To List1.ListCount - 1 ' jos otan -1 pois, niin ei itse yhtenlaskua ei tapahtu lainkaan

Eli alekkain on vaikka:
1
2
2
2
3

Ja ne pitäisi laskea yhteen, mutta tulos ei olekaan 10 vaan 9.

Tulokseksi saan 10 jos laitan ensimmäiselle riville nolla ja muut luvut sen jälkeen, mutta tämä ei liene ainoa tapa toimia?

nomic [21.11.2006 00:50:41]

#

list1.additem "1"
list1.additem "2"
list1.additem "2"
list1.additem "2"
list1.additem "3"

For i = 0 To List1.ListCount - 1
    tulos = tulos + Int(List1.List(i))
Next i
MsgBox tulos

Tuolla minä saan ainaskin tulokseksi kymmenen.

Toitsu [22.11.2006 12:11:42]

#

Juu, toi ylempi antaa tuloksen 10, mutta tämä vaan 9.. Jossain skipataan rivin 0 yli..

List1.AddItem "1"
List1.AddItem "+"
List1.AddItem "2"
List1.AddItem "+"
List1.AddItem "2"
List1.AddItem "+"
List1.AddItem "2"
List1.AddItem "+"
List1.AddItem "3"

Dim Summa As Double
Dim Vmerkki As String

For i = 0 To List1.ListCount - 1

If List1.List(i) = "+" Then
Vmerkki = "+"
End If

If List1.List(i) = "-" Then
Vmerkki = "-"
End If

If List1.List(i) <> "+" And List1.List(i) <> "-" Then
If Vmerkki = "-" Then
Summa = Summa - List1.List(i)
End If
End If

If List1.List(i) <> "+" And List1.List(i) <> "-" Then
    If Vmerkki = "+" Then
    Summa = Summa + List1.List(i)
    End If
End If

Next i

Text1.Text = Summa

BadSource [22.11.2006 12:57:16]

#

Koodisi imee sukkaa, koska ensimmäistä arvoa ("1") tarkistettaessa ei ole mitään Vmerkkiä asetettu, eli sitä ei lisätä Summaan tai poisteta Summasta.

If IsNumeric(List1.List(i)) Then
    If Vmerkki = "-" Then
        Summa = Summa - List1.List(i)
    ElseIf Vmerkki = "+" Then
        Summa = Summa + List1.List(i)
    Else
        Summa = List1.List(i)
    End If
End If

Toitsu [22.11.2006 13:13:37]

#

Niimpä, oppimattomuus aiheuttaa typerehtimistä... Kiitos, nyt toimii!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta