Gå til innhold

Anbefalte innlegg

Hvorfor henter ikke dette scriptet ut linje2 fra testfil.txt?

 

 

Private Sub Command1_Click()
Dim Buff As String, Tekst As String, I As String, linje(0 To 6)

Open "C:\testfil.txt" For Input As #1
Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
Line Input #1, Buff
Tekst = Tekst & Buff & vbNewLine
I = "0"
linje(I) = Tekst
I = Val(I) + Val(1)
Loop
Close #1

MsgBox linje(2)
End Sub

 

Kan noen hjelpe meg?

 

Hilsen Raring

Lenke til kommentar
Videoannonse
Annonse

Siden variabelen I ble satt til 0 hele tiden ble ikke array'en fylt med linjene. Jeg har tatt meg den frihet å fikse litt på koden:

 

Private Sub Command1_Click()

' & = As Long
Dim Buff As String, Free&, I&, Linje()

' For å muligjør åpning av flere filer på en gang
Free = FreeFile

Open "C:\testfil.txt" For Input As Free

Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
   Line Input #Free, Buff
   
   ' Ved å bruke dynamiske arrayer har man nærmest en ubegrenset lasting av linjer
   ReDim Preserve Linje(I)
   Linje(I) = Buff
   
   I = I + 1
Loop

Close Free

' Henter ut linje 3 (teller fra 0)
MsgBox Linje(2)

End Sub

Lenke til kommentar

Nå har jeg forandret litt på det.

Så man kan hente ut hvilke linjer man vil.

Eneste problemet er at hvis du sette det til flere linjer en det er i fila starter den på nytt igjen... Noen løsning?

 

Private Sub Command1_Click()
T = "0"

Do Until T = "10"
' & = As Long
Dim Buff As String, Free&, I&, Linje()

' For å muligjør åpning av flere filer på en gang
Free = FreeFile

Open "C:\testfil.txt" For Input As Free

Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila
  Line Input #Free, Buff
  
  ' Ved å bruke dynamiske arrayer har man nærmest en ubegrenset lasting av linjer
  ReDim Preserve Linje(I)
  Linje(I) = Buff
  
  I = I + 1
Loop
  
Close Free

' Henter ut linje 3 (teller fra 0)

T = T + 1
Loop
MsgBox Linje(4) 'Her velger du hviken(e) linje(e) du skal hente ut
End Sub

 

Noen forslag til hvordan man kan få ut tekst fra et dokument, etter et sted det står noe spesielt og ut dokumentet, eller til det er en spesiell linje som markerer stopp?

Vet at dette går ann med PHP.

Endret av Raring
Lenke til kommentar

Hmm... du burde iallefall sette DIM linjen til helt under Private Sub Command1_Click(). Min teori er at når denne linjen kjøres flere ganger vil variablene bli nullstilt, og derfor starte på nytt igjen.

 

Håper det hjalp.

Lenke til kommentar

En mulig løsning for å laste inn en fil med bestemte betingelser kan være denne koden:

 

Option Compare Text ' Fjern hvis du vil at StartCmd og EndCmd skal være case-sensitive

Public Function LoadFile(Path As String, aArray() As String, Optional StartCmd As String, Optional EndCmd As String)

Dim LoadLine As Boolean, Free&, Buff$, Cnt&

If StartCmd = "" Then LoadLine = True
   
Cnt = -1
Free = FreeFile

Open Path For Input As Free
   Line Input #Free, Buff

   Select Case LoadLine
   Case False
       If Buff = StartCmd Then LoadLine = True
   Case True
   
       If Buff = EndCmd Or EndCmd  = "" Then
           Cnt = Cnt + 1
           ReDim Preserve aArray(Cnt)

           aArray(Cnt) = Buff
       Else
           LoadLine = False
       End If
       
   End Select

Close Free

LoadFile = Cnt

End Function

 

Etter du har lagt den inn i formen, kan du bruke kommandoen overalt i prosjektet. Et eksempel på hvordan bruke den kan være dette:

 

Dim Lines() As String
LoadFile "C:\test.txt", Lines

 

Etter dette vil variablenen Linesvære fylt med data fra filen. Skal du sette spesielle betingelser gjøres det på denne måten:

 

Dim Lines() As String
LoadFile "C:\test.txt", Lines, "[start]", "[end]"

 

Variablenen vil nå være fylt med linjene mellom Start og End i filen. Skal du spesifisere at det ikke finnes en avsluttings-kommando, må du gjøre slik:

 

Dim Lines() As String
LoadFile "C:\test.txt", Lines, "[start]"

 

Vil du at sjekkingen av linjer skal være case-sensitive må du fjerne den første linjen i koden. Med case-sensitive mener jeg at programmet f.eks ser forskjell på [start] og [stArT]

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...