Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Miksei tiedosto sulkeudu?

napalmi [10.01.2005 21:15:18]

#

Mikähän on vikana kun valittaa File already open?

mulla on form1 ja form2. Form2 sisältää combon jossa näkyy eräässä txt tiedostossa olevat tekstit. Kun ohjelma käynnistyy ja nappia painamalla form2 aukeaa, niin tekstit näkyvät combossa, aivan kuten pitääkin. Kun fomr2 suljetaan ja avataan uudelleen (siis sulkematta koko ohjelmaa) tulee herjanheitto File already open! Kun äsken luettiin form2:ssa sen tekstitiedoston sisältö, niin miksei se sulkeutunut ja näinollen sitä ei voi enää käyttää sammuttamatta koko ohjelmaa.

Dim osotteet As String

Open "osote.txt" For Input As #1
While Not EOF(1)
    Line Input #1, osotteet
    Combo1.AddItem osotteet

Wend
Close #1

Eikö tossa "Close #1" pitäs sulkea se tiedosto ja kun taas form2 ladataan niin tiedosto aukeaisi. Missähän vois olla vika?

napalmi [11.01.2005 18:37:01]

#

kiitos paljon avusta, tästähän on ollut palion hyötyä!

Antti Laaksonen [11.01.2005 21:36:02]

#

Avaatko missään muualla tiedostoa? Tuossa koodinpätkässä ei ole virhettä.

napalmi [13.01.2005 00:10:30]

#

En avaa samalla aikaa, mutta hetken kuluttua avaan ks. tiedoston uudelleen. Myös seuraavassa on jokin ongelma:
Dim tiedosto As String

    If Command <> "" Then
        If Left(Command, 1) = """" Then
            tiedosto = Mid(Command, 2, Len(Command) - 2)
        Else
            tiedosto = Command
        End If

        rt1.FileName = tiedosto


End If


Dim rivi As String


Open "tiedot.txt" For Input As #1
While Not EOF(1)
    Line Input #1, rivi
    Combo2.AddItem rivi
Wend
Close #1

Kun ohjelma käynnistetään sellaisenaan, combo2:seen ilmestyy tiedot.txt sisältö. Mutta jos ohjelman exen päälle pudottaa esimerkiksi jonkin rtf tiedoston, tiedosto avautuu ohjelmassa olevassa rtfboksissa, niin kuin pitääkin, mutta nyt se herjaa ettei tiedostoa tiedot.txt löydetä! Mikähän voi olla vikana? olen yrittäny ratkasta ongelmaa jo melkein hermojen menetys vaiheeseen saakka.

BadSource [13.01.2005 06:51:56]

#

Koodi-tageja saa käyttää...

Kun nyt kerran koodissasi availet useita eri txt-tiedostoja, niin noiden Open...For...As #n yhteyteen voisit laittaa FreeFile-funktion, joka etsii seuraavan vapaan tiedostonumeron (File number). Tuo "File already Open"-virhe tulee juuri siitä, että yritätä avata samalle File numberille uuden tiedoston kun se on vielä auki/käytössä.

Seuraavassa esim. FreeFile:n käytöstä:

Dim FileNro As Integer
Dim rivi As String

FileNro = FreeFile
Open "tiedot.txt" For Input As #FileNro
    While Not EOF(FileNro)
        Line Input #FileNro, rivi
        Combo2.AddItem rivi
    Wend
Close #FileNro

Vastaus

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

Tietoa sivustosta