Textzeile aus Datei finden und löschen

  • VB.NET

Es gibt 36 Antworten in diesem Thema. Der letzte Beitrag () ist von Sgt G..

    timonator schrieb:

    Vergiss das mit dem Chat, das wird nur eine Quälerei, für dich, als auch "uns" !
    Ein Chat ist einfach zwei Nummern zu groß, für ein Greenhorn. ;)
    Das ganze über Textdateien zu machen ist schon mal eine Einbahnstraße, also bitte .....
    Hm... hört sich für mich nach aufgeben an? Ist auch egal, darum geht´s gar nicht, tue einfach so als hättest du gar nicht gewusst das es um einen chat geht?!

    timonator schrieb:

    Sammelst du Beiträge?

    Ne ! Du ?
    Das ist gemurkse und nichtmal ein Chat, denn dafür müssen client<->server<->client, oder client<->client irgendwie kommunizieren und dafür braucht man irgendein Protokoll !
    Der Threadersteller hat nicht den geringsten schimmer von dem was er tut, läßt sich aber auch nicht wirklich beraten, also was soll das dann hier ! :cursing:
    Denn einzig guten Tip habe hier ich gegeben !


    Wenn er mit solchen Projekten ÜBEN möchte, sollte man hierbei helfen...das sein Prinzip mit einer Txt datei scheiße ist, kann man ihm sagen. Allerdings ist mit euren "Lass es sein" Beiträgen keinem geholfen...ich glaube kaum das ein Anfänger hier direkt mit TCTP etc. anfangen kann.

    Er möchte ein bisschen Programmieren und hat ein kleines Projekt....ist doch cool. In diesem Projekt kann er lernen mit verschiedenen Teilen von VB.Net umzugehen...
    Also wieso bist du nicht einfach ruhig und still und hälst dich raus...ich glaube kaum das sein Chat irgendwo verwendung finden wird außer lokal bei ihm.

    EstoyMejor schrieb:

    @shaebich Deine Variante sieht gut aus aber ich glaube dann kann man es nur im Code ändern oder? was ich vergessen hatte zu erwähnen war das ich das über ein Textfeld während das Programm läuft ändern möchte!


    Dann solltest du dir eventuell anschauen, wie du den Code abändern kannst, das es auch außerhalb vom Code verändert werden kann ;)
    Du könntest die Variable gesuchtesWort ganz einfach per TextBox festlegen.

    Bisschen Eigeninitiative solltest du auch zeigen...

    Dein nächster Beitrag sollte CODE enthalten welcher von dir ist, ansonsten glaube ich werde ich mich hier auch raushalten...Helfen ok aber vorkauen geht gar nicht.

    shaebich schrieb:

    Wenn er mit solchen Projekten ÜBEN möchte, sollte man hierbei helfen

    Nein, eben nicht ! Am Ende kommt dann nichts bei raus, weil nichts richtig funktioniert, der Threadersteller versteht nur Bahnhof, weil im die Grundlagen fehlen und die Helfer sind genervt, weil das ganze ein einziger Krampf ist !
    Hier wird denen geholfen, die programmieren lernen wollen, die Leute, die lernen wollen wie man möglichst beschissen programmiert, sollen doch bitte wo anders ihr Glück versuchen. ;)

    VB.NET-Quellcode

    1. Dim path As String = "C:\\Chat\Chat.txt"
    2. Dim gesuchtesWort As String = TextBox6.Text
    3. Dim reader As New System.IO.StreamReader(path)
    4. Dim regex As New System.Text.RegularExpressions.Regex([/size]"\[(?<TextBox6.Text>(.*?))\].*?"[size=10], System.Text.RegularExpressions.RegexOptions.Singleline)
    5. Using reader
    6. Do While reader.Peek <> -1
    7. Dim wort As String = regex.Match(reader.ReadLine).Groups(TextBox6.Text).Value
    8. MessageBox.Show(wort)
    9. Loop
    10. End Using

    Also den oberen teil hab ich jetzt für mich umgearbeitet. Aber den Rest hab ich noch nicht so ganz verstanden, also was da passiert, ganz besonders das "\[(?<deinWort>(.*?))\].*?" ist mir schemenhaft!

    Edit: Ich hab nochmal bisschen bearbeitet wie ich denke müsste das fast angepasst sein?

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „EstoyMejor“ ()

    VB.NET-Quellcode

    1. Dim path As String = "C:\\Chat\Chat.txt" 'Deine Textdatei
    2. Dim gesuchtesWort As String = TextBox6.Text
    3. Dim reader As New System.IO.StreamReader(path)
    4. Dim regex As New System.Text.RegularExpressions.Regex("\[(?<TextBox6.Text>(.*?))\].*?", System.Text.RegularExpressions.RegexOptions.Singleline)
    5. Using reader
    6. Do While reader.Peek <> -1
    7. Dim wort As String = regex.Match(reader.ReadLine).Groups(TextBox6.text).Value
    8. MessageBox.Show(wort)
    9. Loop
    10. End Using

    Kann ich in das RegEx dann einfach so meine TextBox setzen? Ne da hab ich was falsch verstanden oder?

    Ps: RegEx hab ich soweit dan verstanden, damit definierst du was er wie suchen soll, um es zu ersetzen, so bringen Beispielweise die "\" das er ein Zeichen findet, in diesem Fall das [ und das ]!

    Edit: Einfach so ändern kann ich das also nicht, wie mach ich das den im nach hinnein änderbar oder kann das einfach so bleiben?
    Edit: Und was mir gerade aufgefallen ist so würde er das Wort ja nur in einer Message Box zeigen, er soll es ja raus nehmen komplett. :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „EstoyMejor“ ()

    EstoyMejor schrieb:

    Ps: RegEx hab ich soweit dan verstanden, damit definierst du was er wie suchen soll, um es zu ersetzen, so bringen Beispielweise die "\" das er ein Zeichen findet, in diesem Fall das [ und das ]!


    / ist ein Escape Zeichen...was das ist steht im Tutorial ;)

    EstoyMejor schrieb:

    Edit: Einfach so ändern kann ich das also nicht, wie mach ich das den im nach hinnein änderbar oder kann das einfach so bleiben?


    das

    VB.NET-Quellcode

    1. "\[(?<TextBox6.Text>(.*?))\].*?"
    ist das RegEx Pattern...dieses Pattern sucht dir einfach alles zwischen [ & ] in der Gruppe deinWort...(Deine Ansatzweise ist falsch ;))...es war schon richtig formuliert. Du musst es also wieder zurück ändern.

    Genauso auch

    VB.NET-Quellcode

    1. Dim wort As String = regex.Match(reader.ReadLine).Groups(TextBox6.text).Value
    hier das TextBox6.Text wieder zurück ändern.

    EstoyMejor schrieb:

    Edit: Und was mir gerade aufgefallen ist so würde er das Wort ja nur in einer Message Box zeigen, er soll es ja raus nehmen komplett.


    Die MessageBox kannst du einfach durch deine Aktionen ersetzten...Allerding kannst du es mit der MessageBox testen, ob auch wirklich deine Usernamen angezeigt werden.

    Die erste Variante welche ich gepostet hatte sollte zu 100% funktionieren, sofern du den Pfad deiner Datei richitg angegeben hast ;)
    Danke soweit, bei mir öffnen sich immer zwei Boxen, eine ist Leer und in einer anderen steht dann der Name drin! Und so zeigt er mir ja noch alle Namen an, er soll mir ja bloß den namen anzeigen den ich in TextBox 6 Rein geschrieben habe :) Also zumindest mach er das bei mir so das er egal welchen Namen ich da drin habe, er mir einfach Multible MSG Boxen auf den Bildschirm Schmeißt mit den namen die im Chat auftauchen! Sorry vllt hatte er doch recht, vllt sollte ich es einfach lassen D:

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

    Oh Schitt, das hätte ich vielleicht schreiben sollen, ja vor jeder Zeile ist ein [Name]....

    Mein Code schreib ich hier lieber nicht rein sonst gibt es zu viele Leute die wieder ankommen was alles zu umständlich ist usw. nur wenn du es wirklich brauchst :/

    Mein Chat sieht dann so aus:
    [Marvin]: marvin
    [Simon]: haha
    [Peter]: und sonst?
    [Alwin]: nix bei dir?
    Das ist ja eigentlich nur das von hier :D

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. Dim path As String = "C:\Chat\Chat.txt"
    3. Dim gesuchtesWort As String = TextBox6.Text
    4. Dim reader As New System.IO.StreamReader(path)
    5. Dim regex As New System.Text.RegularExpressions.Regex("\[(?<deinWort>(.*?))\].*?", System.Text.RegularExpressions.RegexOptions.Singleline)
    6. Using reader
    7. Do While reader.Peek <> -1
    8. Dim wort As String = regex.Match(reader.ReadLine).Groups("deinWort").Value
    9. MessageBox.Show(wort)
    10. Loop
    11. End Using
    12. End Sub

    So das is ja das was wir die ganze zeit haben, und der verursacht eben das ich jede einzelnen namen angezeigt bekomme und nicht nur den einen der in TextBox6 steht!

    EstoyMejor schrieb:

    So das is ja das was wir die ganze zeit haben, und der verursacht eben das ich jede einzelnen namen angezeigt bekomme und nicht nur den einen der in TextBox6 steht!


    So du könntest jetzt den RegEx Pattern so anpassen, das nur nach deinem Wort gesucht wird.
    Allerdings kannst du so immer nur auf ein Namen prüfen.

    Wenn du aber innerhalb der Schleife einfach prüfst ob wort = gesuchtesWort ist, könntest du damit rausfinden in welchen Zeilen dein "gesperrter" User geschrieben hat.

    Dazu musst du nur eine einfach If Abfrage schreiben.
    Hey, ich bin Estoy Mejor hab gestern nur nen anderen Account genutzt da ich zu diesem das Passwort eigentlich vergessen hatte :/ So das hab ich jetzt hin bekommen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sgt G.“ ()