Hei taas. Olen tekemässä ohjelmaa joka lukee tekstitiedostoista tietoja. Tiedostonlukemiset on tehty, mutta minulla on eräässä koodissa jokin virhe enkä saa selville mistä se johtuu. Tämän ongelmallisen koodin tarkoituksena on listata tietoja listoihin.
Koska en tiedä parempaa tapaa, olen tehnyt seuraavanlaisen koodin (tai ainakin koittanut tehdä):
Formilla on kolme listaa, ja koodin olisi tarkoitus avata jokainen tekstitiedosto (esim. 5.txt, 0.txt), ottaa ensimmäiseltä riviltä nimi ja toiselta numero. Tekstitiedostot ovat kansiossa "data" ja niiden nimi on pelkkä numero alkaen nollasta ja päätteenä ".txt"
Sitten koodin olisi tarkoitus laittaa numeron mukaan nimi listaan; jos numero on 0, listaan 1, jos 1, niin listaan 2 ja jne. Numero voi olla 0-2.
Ja sitten koodi lopettaa menemällä virheeseen. (Todella huono tapa mutta muutakaan ei tullut mieleen.)
Private Sub Form_Load()
i = 0
On Error GoTo listing_error
Do
file$ = "data\" + i + ".txt"
Open file$ For Input As #1
Input #1, nimi$
Input #1, numero
If numero = 0 Then
list1.AddItem (i + ": " + nimi$)
ElseIf numero = 1 Then
list2.AddItem (i + ": " + nimi$)
ElseIf numero = 2 Then
list3.AddItem (i + ": " + nimi$)
End If
Close #1
i = i + 1
Loop
Exit Sub
listing_error:
End SubAuttakaa, jos voitte! Miten koodin saisi toimimaan.
Edit: Outoa, jotenkin nuo koodin sisennykset menivät sekaisin... No, kai niistä selvän saa.
Toimimattomuus saattaa johtua siitä, että tiedostoja etsitään väärästä hakemistosta, mutta joka tapauksessa päätin tehdä koodin kokonaan alusta. Toivottavasti tämä vastaa sitä mitä haluat. Jos listoissa käytettäisiin Index-ominaisuutta, If-lauseita ei tarvittaisi ja koodi lyhenisi.
Dim tied As String, id As Integer
Dim nimi As String, num As String
'aloitusarvot
tied = App.Path & "\data\0.txt"
id = 0
'toistetaan niin kauan kuin tiedosto on olemassa
Do Until Dir(tied) = ""
'avataan tiedosto
Open tied For Input As #1
'luetaan nimi ja numero
Line Input #1, nimi
Line Input #1, num
'lisätään nimi oikeaan listaan
Select Case Val(num)
Case 0
List1.AddItem nimi
Case 1
List2.AddItem nimi
Case 2
List3.AddItem nimi
End Select
'suljetaan tiedosto
Close #1
'lisätään id:tä yhdellä ja muodostetaan uusi tiedostonimi
id = id + 1
tied = App.Path & "\data\" & id & ".txt"
LoopAihe on jo aika vanha, joten et voi enää vastata siihen.