#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. + Multi-Zitat Zitieren
#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". + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 ^^ + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren