Bestimmten Text in Datei suchen (und ändern)

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von kai996.

    Bestimmten Text in Datei suchen (und ändern)

    Ich Programmiere grade ein Programm, bei dem die Benutzer einen Code bekommen. Nehmen wir als Beispiel die "1". Das Hauptprogramm befindet sich auf Form1, als erstes wird aber Form2 geöffnet. In der befindet sich eine Textbox, in die man sein Passwort eingibt. Dann kommt man auf Form1.

    Jetzt zur Frage:
    Ich will die ganzen Codes (wahrscheinlich 4-5 Stellig, ca.100-200) in einer Datei Speichern. Sobald man einmal das Programm benutzt hat soll der Code ungültig sein, bzw gelöscht werden. Wie mach ich das? Mir ist egal ob er gelöscht oder geändert wird, er soll nur nicht mehr funktionieren und es soll eine Fehlermeldung ausgegeben werden.
    Ich hoffe mir kann jemand helfen.

    VB.NET-Quellcode

    1. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    2. If Codes.Contains(TextBox1.Text) Then Form2.Show()


    VB.NET-Quellcode

    1. Dim Text As String = IO.File.ReadAllText("datei.txt")
    2. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    3. IO.File.WriteAllText("datei.txt", Text)

    Biesi schrieb:

    VB.NET-Quellcode

    1. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    2. If Codes.Contains(TextBox1.Text) Then Form2.Show()


    VB.NET-Quellcode

    1. Dim Text As String = IO.File.ReadAllText("datei.txt")
    2. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    3. IO.File.WriteAllText("datei.txt", Text)


    Also das erste klappt schonmal (Ich hab das beim Click Event von Button 1 eingefügt).
    Das 2., also

    VB.NET-Quellcode

    1. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    2. IO.File.WriteAllText("datei.txt", Text)
    hab ich da auch eingefügt (hoffe das Stimmt?!), aber ich bekomme immer eine Fehlermeldung und die Form hängt sich auf :(

    Breakfruit schrieb:

    aber ich bekomme immer eine Fehlermeldung und die Form hängt sich auf
    1. Option Strict On
    2. Welche Fehlermeldung in welcher Codezeile?
    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!
    Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Die Zeichenfolge kann keine Länge von 0 (null) haben.


    So sieht jetzt mein ganzer Code von Form2, also der ersten Form aus:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    3. Dim Text As String = IO.File.ReadAllText("datei.txt")
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. If Codes.Contains(TextBox1.Text) Then
    6. Form1.Show()
    7. Me.Close()
    8. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    9. IO.File.WriteAllText("datei.txt", Text)
    10. End If
    11. End Sub
    12. End Class


    Edit: in dieser Zeile: Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")

    Breakfruit schrieb:

    VB.NET-Quellcode

    1. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    2. Dim Text As String = IO.File.ReadAllText("datei.txt")
    Diese beiden Zeilen darfst Du nicht in die Klasse, sondern Du musst sie in eine Prozedur schreiben und schreib den Pfad davor.
    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!
    Ja.
    Außerdem

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    2. Dim Text As String = IO.File.ReadAllText("datei.txt")
    Diese beiden Zeilen darfst Du nicht in die Klasse, sondern Du musst sie in eine Prozedur schreiben und schreib den Pfad davor.
    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!
    Prozedur ist Function oder Sub.
    So z.B.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Codes() As String = IO.File.ReadAllText("datei.txt").Split(vbCrLf)
    3. Dim Text As String = IO.File.ReadAllText("datei.txt")
    4. If Codes.Contains(TextBox1.Text) Then
    5. Form1.Show()
    6. Me.Close()
    7. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    8. IO.File.WriteAllText("datei.txt", Text)
    9. End If
    10. End Sub
    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!
    Sieht jetzt alles exakt so aus:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim Codes() As String = IO.File.ReadAllText(My.Application.Info.DirectoryPath & "\datei.txt").Split(vbCrLf)
    4. Dim Text As String = IO.File.ReadAllText(My.Application.Info.DirectoryPath & "\datei.txt")
    5. If Codes.Contains(TextBox1.Text) Then
    6. Form1.Show()
    7. Me.Close()
    8. Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")
    9. 'Fehler in dieser Zeile: Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in mscorlib.dll aufgetreten.
    10. 'Zusätzliche Informationen: Die Zeichenfolge kann keine Länge von 0 (null) haben.
    11. IO.File.WriteAllText(My.Application.Info.DirectoryPath & "\datei.txt", Text)
    12. End If
    13. End Sub
    14. End Class


    Jetzt funktioniert das ganze nur noch mit der 1, also der 1. Zeile, aber nicht mehr mit der 2., 3., 4.,... und der Fehler ist immer noch da :S

    RodFromGermany schrieb:

    2. Welche Fehlermeldung in welcher Codezeile?
    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!
    Zeile 12: Text = Text.Replace(TextBox1.Text, "UNGÜLTIG")

    Fehlermeldung:
    Fehler in dieser Zeile: Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in mscorlib.dll aufgetreten.
    Zusätzliche Informationen: Die Zeichenfolge kann keine Länge von 0 (null) haben.