Avatar billede Slettet bruger
04. august 2013 - 19:57 Der er 11 kommentarer og
1 løsning

Tjek om tekst eksistere i en tekst fil.

Jeg prøver at rode lidt med VB. og prøver at gøre sådan at når jeg skriver noget i en textbox fil, skal den finde tekst filen/filerne. for navn, og finder den så navnet skal den tage det tekst som står i dem ud for nogle labeler jeg har.

Eksempel
Søger efter "Mads" trykker her efter på OK

Så skal den tjekke en eller flere filer igennem for Mads og når den så støder på den tekst fil som hedder mads, skal den så tage indmaden på den tekst fil, også smide rækkefølgen ind i de labeler jeg har.
eksempel søger Mads
Navn: Mads
Alder: ??
bosted: ??
årgang: ??

Osv.

Jeg håber i forstår min pointe her, og det må gerne kunne lade sig gøre at den går på en hjemmeside/FTP og tjekker om filen eksistere der også trækker teksten ud efter række følge og viser det i labeler.
Avatar billede finb Ekspert
04. august 2013 - 22:22 #1
Filen hedder "mads" og indeholder data om mads, som skal lægges i labels ?
Avatar billede MadsHaupt Juniormester
05. august 2013 - 15:32 #2
Får at søge i tekst filer, efter hvor navn er lig med søgeord i en mappe, så kan du bruge dette.

Kode:
Dim lines() As String = Nothing
For Each File As FileInfo In New DirectoryInfo(Sti til mappe).GetFiles
If Split(IO.File.OpenText(File.FullName).ReadLine, ": ")(1).ToLower = Søgeord.ToLower Then
text = IO.File.ReadAllLines(File.FullName)
Exit For
End If
Next
If lines IsNot Nothing Then
Label1.Text = lines(0)
Label2.Text = lines(1)
Label3.Text = lines(2)
Label4.Text = lines(3)
Else
MsgBox("Navnet blev ikke fundet.", 16)
End If
Avatar billede Slettet bruger
06. august 2013 - 13:05 #3
#1

Korrekt.

#2
Tak :) Der er bare et problem med "For Each File As FileInfo In New DirectoryInfo(C:\test.txt).GetFiles"

Fejlen er i FileInfo & DirectoryInfo.

Men ang hvor filen ligger som jeg har skreven C:\test.txt  Her laver den også en fejl. Men om jeg har skreven det rigtig, eller om det skal være med "C:\test.txt" ved jeg ikke. Men ang de to fejl jeg har oplyst skal jeg skrive noget bestemt i toppen af koden?
Avatar billede MadsHaupt Juniormester
06. august 2013 - 13:13 #4
Har du kun en fil hvor det hele står i?.
Avatar billede MadsHaupt Juniormester
06. august 2013 - 13:15 #5
Hvis du kun har en fil hvor det hele står i, så kan du skrive et eksempel får hvad der kan stå i filen.
Avatar billede Slettet bruger
06. august 2013 - 13:18 #6
#4-5

Hvis den bare kan søge i en mappe, efter det navn man søger så vil det også være fint.

Men jeg kan lige smide hvad min kode består af:


Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim lines() As String = Nothing
        For Each File As FileInfo In New DirectoryInfo(C:\test.txt).GetFiles
            If Split(IO.File.OpenText(File.FullName).ReadLine, ": ")(1).ToLower = Søgeord.ToLower Then
                Text = IO.File.ReadAllLines(File.FullName)
                Exit For
            End If
        Next
        If lines IsNot Nothing Then
            Label1.Text = lines(0)
            Label2.Text = lines(1)
            Label3.Text = lines(2)
            Label4.Text = lines(3)
        Else
            MsgBox("Navnet blev ikke fundet.", 16)
        End If
    End Sub
End Class
Avatar billede MadsHaupt Juniormester
06. august 2013 - 14:10 #7
I tekst filen skal der for eksempel stå:

Navn: ??
Alder: ??
bosted: ??
årgang: ??
Navn: Mads
Alder: ??
bosted: ??
årgang: ??


Kode til at søge med:

Dim lines() As String = IO.File.ReadAllLines("C:\test.txt")
Dim reslines() As String = Nothing
For i = 0 To lines.Length - 1 Step 4
    If Split(lines(i), ": ")(1).ToLower = Dit søgeord.ToLower Then
        reslines = {lines(i), lines(i + 1), lines(i + 2), lines(i + 3)}
        Exit For
    End If
Next
If lines IsNot Nothing Then
    Label1.Text = reslines(0)
    Label2.Text = reslines(1)
    Label3.Text = reslines(2)
    Label4.Text = reslines(3)
Else
    MsgBox("Navnet blev ikke fundet.", 16)
End If



Kode til at tilføje en person:

Dim writer As IO.StreamWriter = IO.File.AppendText("C:\test.txt")
writer.WriteLine("Navn: " & Dit navn)
writer.WriteLine("Alder: " & Din alder)
writer.WriteLine("bosted: " & Dit bosted)
writer.WriteLine("årgang: " & Din årgang)
writer.Close()
MsgBox("Personen er gemt.", 64)


Mit eksempel http://madshaupt.dk/tutucode/WindowsApplication1.zip
Avatar billede Slettet bruger
06. august 2013 - 17:20 #8
#7

Tak :) jeg har kigget lidt på koden, men kunne ikke rigtig få den til det jeg vil, så har prøvet med den du har lagt op. og den fungere beder, men jeg har prøvet at gemme en person også derefter søge på personen så kommer den op med en fejl i kilde koden, "If Split(lines(i), ": ")(1).ToLower = TextBox5.Text.ToLower Then" At tilføje en person fungere, men at søge fungere ikke rigtig :(
Avatar billede Slettet bruger
06. august 2013 - 17:27 #9
Problemet blev løst. Jeg skulle slette min nu værne test.txt fil, før den kunne finde ud af det :)
Avatar billede MadsHaupt Juniormester
06. august 2013 - 17:29 #10
Jeg tror det er fordi at jeg havde lavet en fejl, som jeg først opdaget bagefter jeg havde, lagt det op, så du skal bare downloade det igen. :)
Avatar billede MadsHaupt Juniormester
06. august 2013 - 17:38 #11
svar
Avatar billede Slettet bruger
06. august 2013 - 17:38 #12
#10
Ja nu så det ud til at fungere mere stabilt. Så må jeg se om jeg kan bruge noget der fra, til mit eksperiment. Takker for din hjælp. Smid 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