Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Ongelma ja kysymys (VB)

TH [05.10.2003 12:34:16]

#

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.

Antti Laaksonen [05.10.2003 20:13:20]

#

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

Vastaus

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

Tietoa sivustosta