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 Sub
Auttakaa, 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" Loop
Aihe on jo aika vanha, joten et voi enää vastata siihen.