Textdatei auslesen und überprüfen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Textdatei auslesen und überprüfen

    Moin,

    Ich möchte eine Textdatei (.txt) auslesen und den Wert einer Textbox (5 Zahlen) mit den Werten der Textdatei abfragen.
    Sollte der Wert der Textbox mit dem einem Wert in der Textdatei übereinstimmen, so soll das Programm das "Ok" zum weitermachen geben.

    Das Herunterladen der Datei ist kein Problem, lediglich das auslesen und vergleichen.
    Wie mach ich das am einfachsten?
    RT-Software.de - Ist halt ne gewöhnliche Website, neh.
    es gibt den "Like" Operator.
    Der kann zum Beispiel 2 Strings mit einander vergleichen und wenn die gleich sind dann spukt der ein True aus

    das auslesen am besten mit einem Filestream und einem Streamreader.
    dann zeile für zeile auslesen und vergleichen.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim fs As New FileStream("Liste.txt", FileMode.Open)
    5. Dim sr As New StreamReader(fs)
    6. Dim zeile As String
    7. Dim DeinSuchText As String
    8. Do Until sr.Peek = -1
    9. zeile = sr.ReadLine()
    10. If sr.ReadLine Like DeinSuchText Then
    11. MsgBox("gefunden")
    12. End If
    13. Loop
    14. End Sub
    15. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nigggo“ ()

    @Nigggo Funktioniert soweit, danke.
    Leider läuft der Loop weiter, selbst wenn das nächste Fenster geöffnet wurde. D.h. Die MsgBox erscheint immer wieder.
    Der Loop sollte ja irgendwie gestoppt werden können? Ich begreif nur gerade nicht wirklich, wie.


    Edit: Gut, Mein Hirn hätte ich mal einschalten sollen.
    Habs hinbekommen, ich depp.

    Danke :)
    RT-Software.de - Ist halt ne gewöhnliche Website, neh.
    Okay, ich darf es dummerweise nochmal als unerledigt markieren. (Heut ist anscheinend nicht mein tag >.<)

    Die Datei enthält insgesamt 10 "ID's" in abfolgender Reiher, d.h.

    Textdatei:

    11111
    22222
    33333

    Die Erste "ID", also "11111" wird gefunden.
    Die anderen jedoch nicht.
    Ich versuche seit ner Stunde nun herauszufinden, warum das so ist. Könnte mir da ebenfalls jemand helfen?
    RT-Software.de - Ist halt ne gewöhnliche Website, neh.

    RageNova schrieb:

    Die anderen jedoch nicht.
    Lies die Datei komplett ein, arbeite dann mit einem String-Array:

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines("DeineDatei")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RageNova schrieb:

    Sollte der Wert der Textbox mit dem einem Wert in der Textdatei übereinstimmen, so soll das Programm das "Ok" zum weitermachen geben.
    Sinnvoll wäre hier eine ordentliche objektorientierte Architektur.
    Also die Anforderung könnte man in eine Function übersetzen, der man den Suchstring übergibt, und die Returnt True oder False
    Gibt es vielleicht ein Tut, womit ich das in etwa realisieren kann?

    Mit Function​​ habe ich bisher noch nicht gearbeitet.
    RT-Software.de - Ist halt ne gewöhnliche Website, neh.
    Grundlagen: Fachbegriffe

    eine Methode zu schreiben ist so grundlegend und selbstverständlich, dasses dazu keine Tuts gibt. Ich kann dir Beispiel machen, sag du mir, ob du das verstehst:

    VB.NET-Quellcode

    1. Private Function CheckSuchstring(suchstring As String) As Boolean
    2. Using fs As New FileStream("Liste.txt", FileMode.Open), sr As New StreamReader(fs)
    3. While Not sr.EndOfStream
    4. If sr.ReadLine Like suchstring Then Return True
    5. End While
    6. End Using
    7. Return False
    8. End Function
    Und - ist dir das so unmittelbar verständlich, wie es mir vorkommt?
    Bitte nur, ob dir das äussere der Methode verständlich ist - Fragen zum inneren sind sehr willkommen, aber ein anneres Thema, und wären nicht die Antwort auf meine Frage, ob du den Architektur-Gedanken dabei verstanden hast.

    Die Benamung ist übrigens schlecht - je nachdem, wasses ist, hieße die die Methode besser CheckLogin(login as String) oder CheckAccess(credential As String) oder dergleichen. Die gewählten Namen sollen in OOP immer möglichst genau ausdrücken, was eine Methode tun soll, oder wozu eine Variable da ist.
    Dann liest man den Code und versteht ihn ohne jede weitere Erklärung - sog. "selbsterklärender Code"
    Die Function soll überprüfen, ob der Wert der Textbox mit einem der Werte aus der Textdatei übereinstimmt. Wenn er mit einem der Werte aus der Textdatei übereinstimmt, gibt die Function Ok in Form von Return True
    So hab' ichs verstanden.
    RT-Software.de - Ist halt ne gewöhnliche Website, neh.

    RageNova schrieb:

    übereinstimmt
    Was unterscheidet den Like-Operator vom Vergleichs-Operator(=)?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!