Avatar billede stry Nybegynder
13. august 2005 - 20:32 Der er 10 kommentarer og
1 løsning

Løkker og linjenr

Jeg bruger en løkke til at læse en fil linje for linje og jeg skal bruge en funktion som, hvis en betingelse for den AKTUELLE linje er opfyldt, smider den NÆSTE linje i en variabel.

Jeg forstiller mig noget med at man giver hver linje et indexnr, men ved ikke helt hvordan jeg skal gribe det an.

Jeg har foreløbig lavet følgende:

Public Sub VisTlfNr(FilePath As String)
Dim varTlf, tmpStr As String

Open FilePath For Input As #1
Do Until EOF(1)
    Input #1, tmpStr
    If tmpStr = "<td><strong>Telefon</strong>:</td>" Then
    varTlf = 'næste linie i FilePath
    End If

   
Loop

Close #1
   
End Sub

Håber der er nogen der kan hjælpe - på forhånd tak.
Avatar billede kabbak Professor
13. august 2005 - 20:41 #1
Dim varTlf() As Variant

Public Sub VisTlfNr(FilePath As String)
Dim varTlf, tmpStr As String
I = 0
Open FilePath For Input As #1
Do Until EOF(1)
    Input #1, tmpStr
    If tmpStr = "<td><strong>Telefon</strong>:</td>" Then
    ReDim Preserve varTlf(I)
    varTlf(I) = tmpStr 'næste linie i FilePath
    I = I + 1
    End If

Loop

Close #1
   
End Sub



Info:

Nu ligger de i  varTlf
For i = 0 to ubound(varTlf)
Avatar billede stry Nybegynder
13. august 2005 - 20:57 #2
Det ser fint ud... jeg kigger lige lidt på det.

Hvorfor kan jeg ikke kalde den fra immediate-vinduet med:

call VisTlfNr("I:\CS dokumenter\DGS projekt\FB.txt")
Avatar billede stry Nybegynder
13. august 2005 - 21:01 #3
Hvis jeg kører følgende:

Public Sub VisTlfNr(FilePath As String)
Dim varTlf() As Variant
Dim tmpStr As String
i = 0
Open FilePath For Input As #1
Do Until EOF(1)
    Input #1, tmpStr
    If tmpStr = "<td><strong>Telefon</strong>:</td>" Then
    ReDim Preserve varTlf(i)
    varTlf(i) = tmpStr 'næste linie i FilePath
    Debug.Print varTlf(i)
    i = i + 1
   
    Exit Do
    End If

Loop

Close #1
'VisTlfNr=
 
End Sub

returnerer den: "<td><strong>Telefon</strong>:</td>"
Avatar billede nielle Nybegynder
13. august 2005 - 21:08 #4
Et forslag baseret på en flag-løsning:

Public Sub VisTlfNr(FilePath As String)
    Dim tmpStr As String
    Open FilePath For Input As #1

    Dim GetNextLine As Boolean = False

    Do Until EOF(1)
        Input #1, tmpStr

        If GetNextLine Then
            Debug.Print tmpStr
            Exit Do
        End If

        If tmpStr = "<td><strong>Telefon</strong>:</td>" Then
            GetNextLine = True
        End If
    Loop

    Close #1
End Sub
Avatar billede stry Nybegynder
13. august 2005 - 21:13 #5
"Dim GetNextLine As Boolean = False" giver fejl: "expected end of statement"
Avatar billede nielle Nybegynder
13. august 2005 - 21:15 #6
Ret den til:

Dim GetNextLine As Boolean
GetNextLine = False
Avatar billede stry Nybegynder
13. august 2005 - 21:19 #7
Den virker fint :-) - smid et svar.

Hvad er en flag-løsning?
Avatar billede nielle Nybegynder
13. august 2005 - 21:22 #8
Flaget er GetNextLine-variablem. Vi starter med at det ikke er hejst (GetNextLine = False). Derefter løber vi dine linjer igennem, og når vi kommer til matchen så hejser vi flaget (GetNextLine = True). For hver gennemgang af løkken tjekker vi om flaget er hejst, og hvis det er, ja så udskriver vi linjen.
Avatar billede nielle Nybegynder
13. august 2005 - 21:22 #9
.. og et svar :)
Avatar billede stry Nybegynder
13. august 2005 - 21:24 #10
Smart...tak for hjælpen til begge.
Avatar billede kabbak Professor
13. august 2005 - 22:58 #11
Godt du tog over nielle.

Jeg havde ikke læst spørgsmålet ordenligt, det var jo næste linie og ikke den aktuelle, der skulle fanges.

Desuden var jeg fra computeren, så jeg kunne ikke følge op.
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