Gå til innhold

Hvordan lese fra en tilfeldig linje fra ei txtfil


Anbefalte innlegg

Hei.

 

Det jeg lurer på er hvordan jeg kan gjøre slik at da jeg trykker på en knapp el.

så leser den fra ei tilfeldig linje i text fila og fører den inn i tekst feltet.

Kan vel også gå med at den leser fra ei bestemt linje, så kan jeg ta det fra der..

 

Takker :)

Lenke til kommentar
Videoannonse
Annonse

Jeg tror det er mulig å hente ut spesifikke linjer med kode, men slik ville jeg gjort det:

Dim Innhold() as string=Split(My.Computer.Filesystem.Readalltext("filnavn"),VBCRLF)
Randomize
TextBox1.Text=Innhold(Int(rnd*ubound(innhold)))

 

Koden er ikke testet, men jeg tror den skal fungere fint.

 

 

Degeim

Lenke til kommentar
Jeg tror det er mulig å hente ut spesifikke linjer med kode, men slik ville jeg gjort det:

Dim Innhold() as string=Split(My.Computer.Filesystem.Readalltext("filnavn"),VBCRLF)
Randomize
TextBox1.Text=Innhold(Int(rnd*ubound(innhold)))

 

Koden er ikke testet, men jeg tror den skal fungere fint.

 

 

Degeim

8745498[/snapback]

 

 

Nei funket ikke ;/

Lenke til kommentar
Da må du ha dem på to linjer (fjern '='-tegnet) og erstatte
My.Computer.Filesystem.Readalltext("filnavn")

med noe annet som åpner filer.

Du kunne også ha brukt ReadAllLines, og dermed unngått å først lese inn hele filen i en streng og lage en kopi i form av en array. I VB6 ville jeg implementert denne funksjonen som følger:
Public Function ReadAllLines(sPath As String, Lines() As String) As Long

 

    On Error GoTo Feil

    Dim Free As Long, LineCount As Long

   

    ' Hent ledig filnummer

    Free = FreeFile

   

    ' Åpne den gitte fil

    Open sPath For Input As #Free

       

        ' Fortsett inntil alle linjer er lest

        Do Until EOF(Free)

       

            ' Øk antallet linjer

            LineCount = LineCount + 1

       

            ' Øk størrelsen på arrayen

            ReDim Preserve Lines(1 To LineCount)

           

            ' Lagre linjen her

            Line Input #Free, Lines(LineCount)

       

        Loop

       

    ' Lukk fil

    Close #Free

   

    ' Returner linjene

    ReadAllLines = LineCount

   

' Feilhåndtering

Exit Function

Feil:

    ReadAllLines = -Err.Number

   

End Function

Da kan du lese en tilfeldig linje fra en tekstfil som følger:

Private Sub cmdRandom_Click()

 

    Dim aLines() As String, Ret As Long

   

    ' Les alle linjer fra filen

    Ret = ReadAllLines("C:\Test.txt", aLines)

   

    ' Behandle returverdi

    Select Case Ret

        Case Is > 1

            ' Vis en tilfeldig linje

            MsgBox aLines(Random(UBound(aLines), LBound(aLines)))

        Case 0

            MsgBox "Kan ikke lese linje: filen er tom.", vbCritical, "Feil"

        Case Else

            MsgBox "Kunne ikke lese fil: " & vbNewLine & Error(-Ret) & " (" & -Ret & ")", vbCritical, "Feil"

    End Select

   

End Sub

 

Public Function Random(Min As Long, Max As Long) As Long

 

    ' Initialiser pseudotilfeldighetsgenerator

    Randomize

 

    ' Returner et tilfeldig nummer mellom (og inkludert) minimum og maksimum

    Random = Min + ((Max - Min) * Rnd)

 

End Function

Edit: Jeg merker det er svært mange som unnlater å nevne hvilken kompilator de bruker, med den konsekvens at mye tid går bort i å løse det gitte problem i feil VB-versjon. Kanskje noen burde lage et sticky som forklarer at en ikke kan forvente at folk er tankelesere (eller har tid til å sjekke hva dine tidligere tråder omhandler) og kan finne det ut selv.

Endret av aadnk
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...