Server Empfangsdaten Split Hilfe

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Server Empfangsdaten Split Hilfe

    Hey Leute,

    ich habe ein Problem ich will die Userliste eines Chattes splitten und bekomme vom Server folgendes raus wenn ich die Userliste aufrufe:

    jRAUM#BENUTZER:7:a:::#BENUTZER:27::::#BENUTZER:7::::#BENUTZER:3::::#BENUTZER:27::::#BENUTZER:27::m::#BENUTZER:7:a:::#

    die Benutzer will ich rausgefiltert haben und anhand der Rechte also 3, 7, 27 in der entsprechenden Farbe in die Listbox adden kann mir vielleicht jemand helfen?

    a und m stehen uebrigens fuer away und maennlich aendert sich genauso wie Benutzer und die Rechte

    ich habe bis jetzt nur geschafft die Benutzer rauszufiltern nur das Problem dabei ist ich sehe nicht wer User(3), Operator(7) oder Admin(27) ist

    VB.NET-Quellcode

    1. Dim source As String = "jRAUM#BENUTZER1:7:a:::#BENUTZER2:27::::#BENUTZER3:7::::#BENUTZER4:3::::#BENUTZER5:27::::#BENUTZER6:27::m::#BENUTZER7:7:a:::#"
    2. Dim matches As New List(Of String)
    3. Dim strstart As String = "#"
    4. Dim strend As String = ":"
    5. For i As Integer = 0 To source.Length - strstart.Length
    6. If source.Substring(i, strstart.Length) = strstart Then
    7. Dim f As String = source.Substring(i + strstart.Length)
    8. For j As Integer = 0 To source.Length - strend.Length
    9. If f.Substring(j, strend.Length) = strend Then
    10. matches.Add(f.Substring(0, j))
    11. list_Userlist.Items.Add(f.Substring(0, j))
    12. Exit For
    13. End If
    14. Next
    15. End If
    16. Next
    Erst den String bei # Splitten, dann kriegst du ein Array mit allen Usern und deren Eigenschaften.

    Danach das Array per Schleife durchlaufen und pro String bei : Splitten. Dann hast du jeweils den User in einem Array und kannst dann anhand des Indes (ist ja immer der gleiche) die Eigenschaften dea Users ermitteln.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Phantom schrieb:

    Koenntest du mir einen Code machen? Ich bekomms einfach nicht gebacken..


    :) Fertiger Code kostet. Hilfe hingegen gibts kostenlos.
    Oben habe ich dir ja einen Weg gezeigt. Hast du den mal versucht?

    2. Ein Array wie hier enthält alles, was rein gesplittet wurde.
    Den ersten Part (Split bei #) schaffst du sicher alleine, was du brauchst ist ein Array was alles enthält. Das ist dann das entstandene Array, nennen wir es User()


    2. Dann geht es damit weiter. Es muss per Schleife durchlaufen werden. Da aber der Erste immer der Raum ist, fange beim 2. Eintrag an. Für jeden Eintrag splittest du selbigen beim :.
    Jetzt kannst du mit User(0) den Namen ermitteln, mit User(1) kriegst du deine Zahl für die Rolle des Users.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @Phantom Klick mal auf Split und drück auf F1 (Hilfe).
    Wenn Du nach den Doppelpunkten splittest, kannst Du mit der Optopm .RemoveEmptyEntries Leerzeilen im Resultat-Array unterdrücken.
    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!
    Hey,

    danke fuer die Splithilfe MrMo und RodFromGermany

    ich habe es nun geschafft den String in zwei Teile zu splitten in User und in die Rolle der User

    VB.NET-Quellcode

    1. Dim line As String = "RAUM#BENUTZER1:27::::#BENUTZER2:7::::#BENUTZER3:27::f::#BENUTZER4:7::f:p:#BENUTZER5:27::::#BENUTZER6:3::::#BENUTZER7:7::f::#BENUTZER8:7:a:::#"
    2. Dim linesplitted() As String = line.Split(New Char() {"#"}, StringSplitOptions.RemoveEmptyEntries)
    3. For i As Integer = 1 To linesplitted.Length - 1
    4. Dim User() As String = linesplitted(i).Split(New Char() {":"}, StringSplitOptions.RemoveEmptyEntries)
    5. For i2 As Integer = 0 To User.Length - 1
    6. ListBox1.Items.Add(User(0))
    7. ListBox2.Items.Add(User(1))
    8. Exit For
    9. Next
    10. Next




    aber nun stehe ich vor dem naechsten Problem wie kann ich z.b dem Benutzer1 die Rolle1 zuweisen und dann in der Farbe Rot in die Listbox adden?

    ich will dass die Benutzer die die Rolle 27 haben Rot in der Listbox geaddet werden die mit Rolle 7 in Blau und die mit 3 sollen Schwarz bleiben
    @Phantom Lass die ListBoxen, nimm eine DataTable, da sind die Zeilen schön sortiert und wenn Du das ganze im DataGridView darstellst, kannst Du die Zellen im CellFormatting-Event entsprechend Deinen Rollen auch färben.
    Tabelle und DGV gugst Du z.B. hier.
    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!
    Naja, vielleicht wäre es jetzt an der Zeit mit Objektorientierung anzufangen. Ich habe oben mit Absicht von Eigenschaften gesprochen.

    Hier haben wir doch ein Paradebeispiel. Du schreibst dir eine Klasse mit dem Namen User. Dort gibt es dann Properties wie z.B Name, Rolle, Geschlecht usw.

    Das was du in den Arrays machst um die Daten in die Listboxen hinzu zu fügen, ersetzt du durch je eine neue Instanz der Klasse User. Dann dort auch direkt die Properties zuweisen und einer vorher außerhalb der Schleife deklarierten List( Of User) hinzufügen.

    Dann am Ende die List(Of User) der ListBox als Datasource angeben und den DisplayMember setzen.

    Nun hast du alle User, inkl. deren Eigenschaften in der Listbox und kannst dann damit weiter arbeiten.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen