Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Tietyn rivin haku tiedostosta

Sivun loppuun

sooda [16.01.2004 21:27:31]

#

Hakee tietyn rivin tiedostosta. Se... noh, siinähän se kuvaus oli :P sorsa on niin hyvin kommentoitua että pitäisi olla selvää :P

editoitu 20. kesäkuuta (FreeFile juttu lisätty)

Function HaeRivi(rivi, filu)

    On Error Resume Next 'jos tiedostoa ei ole
    FiluNro = FreeFile 'seuraava vapaa filu avattavaksi
    Open filu For Input As #FiluNro 'avataan tiedosto
    If Err = 53 Then Exit Function 'jos tiedostoa ei ole niin poistutaan
    Do Until EOF(1) 'luupataan tiedoston loppuun asti
        r = r + 1 'lisätään rivicountteria yhdellä
        Line Input #FiluNro, teksti 'haetaan yksi rivi tiedostosta
        If r = rivi Then 'jos ollaan sillä rivillä mikä pitää hakea...
            HaeRivi = teksti 'niin kerrotaan oikea rivi
            Close 'ja suletaan tiedosto
            Exit Function 'ja poistutaan
        End If
    Loop 'seuraava rivi...
    Close #FiluNro 'sule tiedosto. jos tässä kohtaa ollaan niin haettava rivinumero on niin iso ettei sitä ole tiedostossa, koska exit sub tuolla toteutuu jos löytyy...

End Function

Bill Keltanen [18.01.2004 09:21:29]

#

Näyttää kivalta... Kokeilen varmaan lähiaikoina, mutta mixen heti? :D

Gaxx [18.01.2004 14:10:09]

#

Joo ihan kätevä ku on myös toi tiedoston lopun tarkistus juttu.

Sharph [18.01.2004 17:53:15]

#

ja sama on Do While Not EOF(1)

thefox [21.01.2004 14:51:00]

#

Hmm.. ehkä hieman kyseenalaista käyttää Closea ilman parametria tuossa. Taitaa vielä VB:ssäkin Close ilman parametreja sulkea kaikki avoimet tiedostot.

Monkkats [07.02.2004 17:00:29]

#

Tollasta oonki aina tarvinnu! Jesh..

hunajavohveli [19.06.2004 16:04:28]

#

Joo, kyllä se parametritön Close sulkee kaikki tiedostot. Itse olen aina käyttänyt parametrin kanssa, vaikka olisinkin käsitellyt vain yhtä tiedostoa.

sooda [20.06.2004 12:50:47]

#

Njooh, lisäsin siihen ton #FiluNro-FreeFile jutun nyt niin ei tule ristiriitoja.

tuomas [20.06.2004 15:21:15]

#

tuo on muuten turha tuo

If Err = 53 Then Exit Function 'jos tiedostoa ei ole niin poistutaan

kun alusta löytyy jo On Error Resume Next

sooda [21.06.2004 09:52:04]

#

Niinnojoo... toi on vaan selkeempää noin :) (ja ilman onerroria toikaan ei toimisi :D)

Professori [27.08.2004 07:27:46]

#

Mitenkäs toimii toiseen suuntaan? Eli et kirjottaa tiettyyn kohtaan?

sooda [27.08.2004 08:06:38]

#

Näin, professori.

moptim [29.07.2006 11:57:59]

#

ton funktion vois kyl tehä myös näin:

Function HaeRivi(rivi, filu)
  Dim teksti As Variant
  On Error Resume Next 'jos tiedostoa ei ole
  FiluNro = FreeFile 'seuraava vapaa filu avattavaksi
  Open filu For Input As #FiluNro 'avataan tiedosto
  If Err = 53 Then Exit Function 'jos tiedostoa ei ole niin poistutaan
  Input #FiluNro, teksti
  teksti = Split (teksti, vbCrLf)
  HaeRivi = teksti(rivi - 1)
  Close #FiluNro 'ja suletaan tiedosto
End Function

moptim [11.09.2006 19:29:08]

#

ewww, nythän tuo haerivi on varianttina. voisko olla

Function HaeRivi(rivi, filu) As String

AakenStein [15.12.2006 13:59:51]

#

hahhah, king, kahtoppa, ei tiiä vastaavatko, onhan noista muista kommenteista pari vuotta aikaa =)


Sivun alkuun

Vastaus

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

Tietoa sivustosta