[C/C++] Links auslesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Epidrome, 13. Juni 2007 .

Schlagworte:
  1. 13. Juni 2007
    Links auslesen

    Hallo,
    ich wollte wissen wie ich aus Memo links auslesen kann.
    Es geht darum man kann viel text in Memo schreiben und wenn man dann auf ein Button klickt, soll dann überall wo mit <a href.... oder www angefangen wird, ausgegeben werden.
    Schritt 1 text in Memo schreiben.
    Schritt 2 Button klicken.
    Schritt 3 Links werden ausgegeben.

    Bei php kenne ich das mit preg_match_all aber mit C++ bräuchte ich eure hilfe.
    Wurde mich auf Tipps oder Lösungsmöglichkeiten freuen.

    MFG Epidrome.
     
  2. 13. Juni 2007
    AW: Links auslesen

    Auf folgender Seite findest du eine fertige Methode, um Strings zu teilen:

    Quicky der C-Ecke: split

    Dann kannst du dir das so zurechtbauen, dass es an den Stellen, wo < und > steht, den String teilt und du kriegst das "Innere".
     
  3. 19. Juni 2007
    AW: Links auslesen

    hi,
    gibt es auch andere Möglichkeit das Problem zu lösen.
    Oder muss ich das nur mit Split machen.
    Kriege das mit split befehl nicht hin könntest du mir Bitte ne Beispiel schreiben.
    Dank im Voraus.
     
  4. 19. Juni 2007
    AW: Links auslesen

    Mh, ich kann dir mein Beispiel zeigen und erklären, aber ich weiß nicht, ob's dir viel bringt. Auf der Seite wirds ja auch erklärt.

    Also ich hab nen Server / Client geschrieben, der einen Chat und ein Spiel haben soll. Deshalb müssen Anweisungen vom Client zum Server getrennt werden, je nachdem, ob es nun Chatmessages sind, oder ob es Anweisungen an das Spiel sind.

    Chat: msg
    Befehl: cmd

    Dann sind meine Strings folgendermaßen aufgabaut:

    msg|Nickname|Text

    oder

    cmd|Befehl

    Nachher kann man halt abfragen, obs ne Message oder nen Befehl ist. Naja, auf jeden Fall ist mein Trennzeichen, wie man sieht, dieses "|".

    Jetzt hab ich ne Klasse, die die Methode split besitzt. In der Unit1.cpp wird die Methode split aufgerufen. Der Textbuffer ist nur der Text, der vom Client gesendet wird. Kann auch direkt in die Methode rein, ich wollte es aber so:

    Code:
     TextBuffer = Socket->ReceiveText(); // Empfange Text von Client
    
     DieSteuerung.split(DieSteuerung.Anweisung, TextBuffer, "|"); // Trenne nach | auf und
     // speichere in Anweisung ab
    Die Methode macht dann folgendes (wie auf der Homepage beschrieben):

    Code:
    void Steuerung::split(TStringList *Feld,const String Eingabe,const String Delimiter)
    {
     int Position;
     int Dellang;
    
     Feld->Clear();
     Feld->Duplicates=dupAccept;
    
     Dellang = Delimiter.Length();
     Position = Eingabe.AnsiPos(Delimiter);
    
     while(Position > 0)
     {
     Feld->Add(Eingabe.SubString(1,Position-1));
     Eingabe.Delete(1, Position+Dellang-1);
     Position = Eingabe.AnsiPos(Delimiter);
     }
     
     Feld->Add(Eingabe);
    
     splitted = true;
    
     setEmpfang(Feld); // ACHTUNG, wenns nicht tut, könnte es hier dran liegen!
     // Dann direkt mit Steuerung.Anweisung versuchen!!!
    }
    Jetzt kann ich die einzelnen Elemente über DieSteuerung.Anweisung aufrufen.

    Aber ehrlich gesagt, find ich das Beispiel und die Erklärung auf der Seite super einfach, was soll man dazu noch sagen:

    Code:
    Teilt einen String anhand eines Trennzeichens auf und gibt die Ergebnisse in einem TStringList-Objekt zurück.
    Parameter:
    TStringList enthält zum Schluß die aufgeteilten Werte
    String String der aufzuteilen ist
    String Trennzeichen
    Rückgabewert:
    void 
     
    Beispiel: TStringList *worte=new TStringList();
    split(worte,"Das ist eine Website"," ");
    .....
    String teileins=worte->Strings[0];
    .....
    delete worte;
    Wenn du das nicht verstehst, weiß ich auch nicht weiter ^^
     
  5. 19. Juni 2007
    AW: Links auslesen

    DAnn machs doch su, du guckst einfach die ersten 4 Buchstaben der empfangenen daten an und wenn das "cmd|" ist machst du halt weiter mit der cmd Funktion und übergibts dann den befehl!

    Wenns "msg|" ist dann übergibste das: "Nickname|Text"

    und dann teilste das halt nochmal bei "|"

    dann haste doch alles so wie du es brauchst

    Knusperkeks
     
  6. 19. Juni 2007
    AW: Links auslesen

    Danke, aber bei mir klappts ja xD
    Epidrome verstehts nicht, naja noch ein Tipp an dich, Epidrome: Kümmer dich nicht darum, wie die Methode funktioniert, also was innerhalb der geschweiften Klammern steht. Kümmer dich nur darum, was du der Methode geben musst und darum, was du bekommst. Man kann nicht immer das Rad neu erfinden, also ist es nicht schlimm, wenn man sich fertige Methoden holt. Mit dem Borland Builder machste das ja sowieso. Jedes grafische Element z.B. erspart dir Arbeit.
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.