Avatar billede downloading Nybegynder
04. august 2006 - 11:43 Der er 16 kommentarer og
1 løsning

læse linje X fra en txt fil

Hej.

Jeg har en txt fil med en masse linjer. I hver linje står der noget jeg skal bruge.

Jeg har så en timer funktion, som hver gang den er løbet færdig skal tage linje X, og næste gang linje X+1, næste gang igen X+1+1 osv. Og i hvert tilfælde skal imputtet gennem som en string.

Er det lættest at loade hele txt filen som en string, og så vælge linjer i sktringen eller skal jeg loade txt filens linje hver gang?

Er der ikke nogle der har en lille kode stum, jeg ved ikke engang hvordan man åbner en txt fil :)
Avatar billede mcgoat Nybegynder
04. august 2006 - 11:56 #1
Private Sub cmdopen_Click()

Open "C:\test.txt" For Input As #1
   
Do Until EOF(1)

        Input #1, Data
        text1.text = text1.text + Data + vbNewLine
    EOF (1)
    Loop
    Close #1
   
End Sub

Sådan åbner og læser du ihvertfald en fil :)
Avatar billede downloading Nybegynder
04. august 2006 - 11:58 #2
ok.. Tak.. Hvilken en linje læser den så?
Avatar billede mcgoat Nybegynder
04. august 2006 - 12:03 #3
alle sammen, en efter en.
tror vist ikke den sidste EOF (1) skal være der dog.
Avatar billede mcgoat Nybegynder
04. august 2006 - 12:04 #4
Denne funktion kan vælge hvilken linie der skal læses

Public Function ReadLine(fName As String, LineNumber As Long) _
    As String

'Parameters: fName = FullPath to File
'            LineNumber = LineToRead

'Returns:    Contents of the line, or a blank string if
'            LineNumber is greater than the total number of lines

'Requires:  Reference to Microsoft Scripting Runtime

'Example: MsgBox ReadLine("C:\AutoExec.bat", 3)
'          Displays third line of autoexec.bat
                                                 

  Dim oFSO As New FileSystemObject
  Dim oFSTR As Scripting.TextStream
  Dim ret As Long
  Dim lCtr As Long
 
  If oFSO.FileExists(fName) Then
    Set oFSTR = oFSO.OpenTextFile(fName)
    Do While Not oFSTR.AtEndOfStream
        lCtr = lCtr + 1
        If lCtr = LineNumber Then
            ReadLine = oFSTR.ReadLine
            Exit Do
        End If
        oFSTR.SkipLine
    Loop
    oFSTR.Close
    Set oFSTR = Nothing

  End If
End Function
Avatar billede mcgoat Nybegynder
04. august 2006 - 12:06 #5
'Example: MsgBox ReadLine("C:\AutoExec.bat", 3)

Så hvis du bare paster den funktion ind i din kode og kalder den med:

text1.text = ReadLine("C:\minfil.txt", 3) så vil indholdet af text1.text være minfil.txt linie 3
Avatar billede nixir Nybegynder
04. august 2006 - 12:13 #6
hva nu hvis man har forskellige "colloner"? ligesom i en tabel .... ?
id navn
1 niXir
2 mcgoat

noget i den stil .. hvad gør jeg så hvis jeg skal kunne hive både id og navn ud af tekst-filen hver gang ?
Avatar billede mcgoat Nybegynder
04. august 2006 - 12:18 #7
hvis det bare står ved siden af hinanden så er det vel nok bare at hente linie 2 for at få: "2 mcgoat" ud
Avatar billede downloading Nybegynder
04. august 2006 - 12:19 #8
hmm.. Den laver fejl på funktionen.. Jeg har bare kopieret det der, sat ind, og så skrevet

MsgBox ReadLine("C:\Documents and Settings\Bille\Skrivebord\Visual Basic.txt", 2)
Avatar billede downloading Nybegynder
04. august 2006 - 12:20 #9
Den skriver:

Compile Error
UPser-defined type not defined
Avatar billede downloading Nybegynder
04. august 2006 - 12:20 #10
og så mærkere den "oFSO As New FileSystemObject"
Avatar billede downloading Nybegynder
04. august 2006 - 12:33 #11
Hjælp :( hehe
Avatar billede mcgoat Nybegynder
04. august 2006 - 12:34 #12
prøv:

you will need to add a reference to the Scripting Runtime library in VB6 from the Project|References menu. (Check the Microsoft Scripting Runtime reference and click OK
Avatar billede nixir Nybegynder
04. august 2006 - 12:48 #13
det jeg ente var om man unne adskilde det på en måde så man kan bruge det uafhægigt af hinanden ... ? fx nixir har id 1
Avatar billede downloading Nybegynder
04. august 2006 - 12:54 #14
nu kommer der da ikke nogen fejl, men hmm.. Visual Basic.txt indeholder følgende:
slette alle txt filer (cookies) i en mappe..
Kill("C:\Documents and Settings\Bille\Cookies\*.txt*")

når jeg så køre
MsgBox ReadLine("C:\Documents and Settings\Bille\Skrivebord\Visual Basic.txt", 2) får jeg et output på "3"... hmmm??
Avatar billede downloading Nybegynder
04. august 2006 - 12:55 #15
nej undskyld.. Hvis jeg bruger MsgBox ReadLine("C:\Documents and Settings\Bille\Skrivebord\Visual Basic.txt", 1) får jeg 3, bruger jeg MsgBox ReadLine("C:\Documents and Settings\Bille\Skrivebord\Visual Basic.txt", 2) får jeg ingenting (altså en tom MsgBox..
Avatar billede downloading Nybegynder
04. august 2006 - 13:51 #16
Hilfe :)
Avatar billede downloading Nybegynder
04. august 2006 - 14:35 #17
nåå. Det er fordi der ikke må ligge komandoer i selvfølgelig.. Mange tak for svarene :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester