Avatar billede wolfgang Praktikant
21. februar 2006 - 12:17 Der er 12 kommentarer

Tekst fil FSO - start ved specifik linje

Hej,

Kan man vha. et parameter, angive hvilken linje i tekstfilen, hvorfra at ens data skal hentes fra?

Håber at I kan hjælpe.
Avatar billede morhan Novice
21. februar 2006 - 12:29 #1
Du kan bruge skipline i en løkke..

startline = 1

For i=2 To startline
  fso.SkipLine
Next
Avatar billede morhan Novice
21. februar 2006 - 12:30 #2
sad i min egen tankegang

SkipLine skal kaldes på dit stream objekt
Avatar billede wolfgang Praktikant
21. februar 2006 - 12:35 #3
Jeg er ikke helt med - Har du et eksempel på det?

Hvis jeg f.eks. vil have fra linje 3 og fremefter?

--- Tekstfil start ---
Linje 1
Linje 2
Linje 3
Linje 4
Linje 5
--- Tekstfil slut ---
Avatar billede morhan Novice
21. februar 2006 - 12:45 #4
Sub SkipLines(fs, antal)
    Dim i
    For i=1 To antal
      fs.SkipLine
    Next
End Sub

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fs = fso.OpenTextFile(Server.MapPath("tekstfil.txt"), 1)

' spring de første to linjer over
SkipLines fs, 2

Response.Write fs.ReadLine  '-- udskriver: Linje 3

fs.Close
Avatar billede wolfgang Praktikant
21. februar 2006 - 15:55 #5
Morhan -> dit eksempel virker fint.

Men det gør det desværre ikke, når jeg prøver at ligge det ind i min eksisterende kode.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("d:/data/")
For Each File In Folder.Files
  Response.Write File.Name & "<br>"
Sub SkipLines(fs, antal)
    Dim i
    For i=1 To antal
      fs.SkipLine
    Next
End Sub

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fs = fso.OpenTextFile("d:/data/"&File.Name &""), 1)

' spring de første to linjer over
SkipLines fs, 2

Response.Write fs.ReadLine  '-- udskriver: Linje 3

fs.Close
Next
Set Folder = Nothing
Set FSO = Nothing
fs.Close
Avatar billede wolfgang Praktikant
21. februar 2006 - 15:55 #6
Fejl information
Der er en syntaksfejl
Sub SkipLines(fs, antal)
Avatar billede morhan Novice
21. februar 2006 - 17:09 #7
I eksemplet ønsker du at udskrive linje 3 fra alle filer i data?


Sub SkipLines(fs, antal)
    Dim i
    For i=1 To antal
      fs.SkipLine
    Next
End Sub


Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("d:/data/")

For Each File In Folder.Files
    Response.Write File.Name & "<br>"

    Set fs = FSO.OpenTextFile("d:/data/"&File.Name, 1)

    ' spring de første to linjer over
    SkipLines fs, 2

    Response.Write fs.ReadLine  '-- udskriver: Linje 3

    fs.Close
Next

Set Folder = Nothing
Set FSO = Nothing
Avatar billede wolfgang Praktikant
21. februar 2006 - 21:27 #8
Har lige afprøvet og får følgende fejl:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A003E)
Input efter filens slutning

Fejl i denne linje:
fs.SkipLine
Avatar billede morhan Novice
22. februar 2006 - 01:39 #9
der skal tilføjes noget errorhandling, hvis filen er tom, eller der er færre end x antal linjer

'-- return: true hvis ikke EOF
Function SkipLines(fs, antal)
    Dim i, ret

    ret = True 'sættes til false, hvis EOF nås

    For i=1 To antal
        fs.SkipLine
        If fs.AtEndOfStream Then ret = false : Exit For
    Next

    SkipLines = ret
End Function


Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("d:/data/")

For Each File In Folder.Files
    Response.Write File.Name & "<br>"

    Set fs = FSO.OpenTextFile("d:/data/"&File.Name, 1)

    If Not fs.AtEndOfStream Then

        ' spring de første to linjer over
        If SkipLines(fs, 2) Then
            Response.Write fs.ReadLine  '-- udskriver: Linje 3
        Else
            Response.Write "linjen findes ikke i filen"
        End If
    Else
        Response.Write "filen er tom"
    End If

    fs.Close
Next

Set Folder = Nothing
Set FSO = Nothing
Avatar billede wolfgang Praktikant
22. februar 2006 - 09:39 #10
Sådan - Tusind tak for hjælpen!
Opret lige et svar, så du kan få dine velfortjente points.

Har du evt. et par links med uddybende artikler om FSO og lign.?
Avatar billede wolfgang Praktikant
27. februar 2006 - 10:22 #11
Sådan - Tusind tak for hjælpen!
Opret lige et svar, så du kan få dine velfortjente points.
Avatar billede wolfgang Praktikant
03. marts 2006 - 13:37 #12
Så skal der ryddes op :)
Vil du ikke poste et svar?
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