Bereiche eines Strings auslesen? (Wörter)



  • Hm, vielleicht hilft ja auch die Suche, wenn du in der FAQ nix findest... 🙄

    Devil



  • und nach was soll ich suchen?



  • Hm, kommt drauf an wie dein String beschaffen ist.
    1 . . . 2 . . . 3 . . . .4 . . 5
    1002 TALK Perner 0000 "hallo"

    Vielleicht suchst du nach ' ' ?

    Interessant wäre es auch zu wissen, ob 1 und 4 immer die gleiche Länge haben.
    und ob 2 nur eine Bestimmte bandbreite besitzt, also im grunde vorhersehbar.

    Devil

    [ Dieser Beitrag wurde am 25.11.2002 um 18:45 Uhr von devil81 editiert. ]

    [ Dieser Beitrag wurde am 25.11.2002 um 18:47 Uhr von devil81 editiert. ]



  • will einfach nur nach dem TALK suchen.



  • Wenn die Nachrichten Art (1002) immer gleichlang ist, was denke ich mal so ist (...),
    dann kannst du ja einfach die ersten 4 Stellen des Strings prüfen, und diese
    in einen Int konvertieren.

    Devil



  • ok dann werde ich das so machen :p



  • was mache ich aber, wenn das wort NICHT immer gleichlang ist, wie es zum beispiel beim namen der fall ist? Kann man nicht irgendwie einzelne Wörter abscannen?



  • ?



  • ?



  • ?



  • Blöde frage aber wie fängst du Nachrichten von battelnet aber?



  • ?



  • Original erstellt von Perner:
    Es es möglich von einem String, nen bestimmten bereich auszulesen?
    Der battle.net Server sendet, wenn man ganz normal in den Channel etwas sagt
    [ Dieser Beitrag wurde am 25.11.2002 um 19:42 Uhr von [qb]Perner
    editiert. ][/QB]

    War daruf bezogen.



  • Ja das is halt Server Protokoll.
    Immer wenn etwas geschieht, sendet der Server an dich eine Nachricht.

    Kommt jemand in den Channel in dem du dich befindest, sendet dir der Server
    1002 JOIN Perner 0000 [STAR]

    oder wenn ihn jemand wieder verlässt
    1003 LEAVE Perner 0000 [STAR]

    schreibt jemand eine Nachricht, schickt er dir folgendes:
    1005 TALK Perner 0000 "hallo"

    Dies bekommt man alles in einem String.
    Es ist aber etwas mühselig rauszusuchen, wer jetzt gerade mit dir chattet.
    Deshalb will ich das so machen, dass wenn sich im String die ID 1005 befindet, das mir mein Programm nicht
    '1005 TALK Perner 0000 "hallo"' sondern
    'Perner sagt: "Hallo"' in mein Chat fenster schreibt.

    Dazu soll er dann natürlich aus dem String entnehmen wie der Chatter heißt.
    Die if abfrage soll dann so aussehen:

    if (strRecivedID == "1005");
    {
    CString strChatterName = 3tes Wort
    CString strChatterMessage = 5tes Wort
    
    m_ctlRecvd.AddString(strChatterName+" sagt: "+strChatterMessage) 
    }
    

    Ist das irgendwie so machbar?
    Das was ich suche ist der richtige code für 3tes und 5tes Wort.

    Danke im Voraus

    [ Dieser Beitrag wurde am 25.11.2002 um 23:00 Uhr von Perner editiert. ]



  • Da der String mt einen Trennzeichen versehen ist kann man danach suchen und den String parsen

    CString member Find liefert die Position des vorkommens des Suchzeichens.

    Danach den string mit Mid,Left,Right extrahieren.



  • Wenn ich einen string aufteile mach ich das immer so:

    char* data = "1003 LEAVE Perner 0000 [HALLO]"
    char* nummer = NULL;
    char* beschreibung = NULL;
    char* person = NULL;
    char* code = NULL;
    char* nachricht = NULL;
    char* term;
    
    nummer = data;
    term = strchr( data, ' ' );
    *term = '\0';
    term++;
    
    beschreibung = term ;
    term = strchr( term , ' ' );
    *term = '\0';
    term++;
    
    person = term;
    term = strchr( term , ' ' );
    *term = '\0';
    term++;
    ...
    

    must du noch ein parr fehler abfangen wenn mal kein Leerzeichen gefunden wurden.
    Habe das aber jetzt nicht getestet nur schnell geschrieben.



  • Das geht mit CString viel einfacher.

    Devil



  • Original erstellt von devil81:
    **Das geht mit CString viel einfacher.

    Devil**

    und Wie???????????????????



  • Hallo,

    also ich würde des so machen:

    CString komischerStringvondemServer=blablabla...

    if(komischerStringvondemServer.Find("1002")!=-1) {
    int a=komischerStringvondemServer.Find("\"");
    int b=komischerStringvondemServer.Lenght(); <- oder so ähnlich
    CString message=komischerStringvondemServer.substring(a,b); <- oder so ähnlich

    }

    und dann hast du des was du wolltest, oder?

    Bye!
    Stefan



  • mhh, die lösung ist nicht schlecht, aber ich will die Wörter "richtig" auslesen, damit ich weiß wie ein bestimmter chatter heißt.

    Für 'Perner sagt:' z.B

    PS: @ Devil:
    Wie geht denn deine CString lösung? Daran wäre ich interessiert.

    [ Dieser Beitrag wurde am 26.11.2002 um 19:43 Uhr von Perner editiert. ]


Anmelden zum Antworten