text bearbeiten und ausgeben.



  • Hallo,

    Ich würde hier den String in einen std::string packen. Dann kann man die vielen find-Methoden dort benutzen. bei denen ist es unter anderen auch möglich die Anfangspoition der Suche mit anzugeben. Bei dir wäre das etwa so was.

    string text("<a href=\"http://wwwxyz.de\"  target=\"_blank\"><img src=\"http://localhost/bilder/test.gif\" border= \"0\" alt=\"test alt\" /></a>");
    // links und rechts vom ersten Abschnitt
    string::size_type pos1 = text.find("<a href=");
    string::size_type pos2 = text.find(">");
    // links und rechts vom zweiten Abschnitt
    string::size_type pos3 = text.find("<img");
    string::size_type pos4 = text.find(">", pos3);
    //usw.
    

    immer schön auf string::npos testen ob überhaupt was gefunden wurde.



  • Borland Dev 2006:
    [C++ Fehler] Unit1.cpp(29): E2316 'find' ist kein Element von 'AnsiString'
    [C++ Fehler] Unit1.cpp(30): E2316 'find' ist kein Element von 'AnsiString'
    [C++ Fehler] Unit1.cpp(32): E2316 'find' ist kein Element von 'AnsiString'
    [C++ Fehler] Unit1.cpp(33): E2316 'find' ist kein Element von 'AnsiString'

    aber die idee war sehr gut.



  • Hallo

    Braunstein schrieb:

    Ich würde hier den String in einen std::string packen

    bis bald
    akari



  • Habe das mal so probiert:

    int pos1 = text.Pos("<a href=");
       int pos2 = text.Pos(">");
       String text1 = pos2;
       String text2 = text1.Delete(pos1,text1.Length());
       Edit1->Text = text2;
    

    ausgabe einfach nur zahl teilweise Fehlerhaft.
    Wo ist der Fehler?



  • hier

    String text1 = pos2;
    

    weist du deinem String doch eine Zahl zu. Was glaubst du was dann da drin steht? Nimm dafür SubStr.
    oder besser gleich, das was ich vorher gepostet hatte. 🙂



  • Ok, noch mal probiert danke.
    Letzte frage die Ausgabe....? 😃
    Von pos1 bis po2 ?
    Danke.



  • z.Bsp. so

    string first(text, pos1, pos2-pos1+1);
    

    oder so

    string first = text.substr(pos1, pos2-pos1+1);
    


  • Werde jetzt alles ausprobieren mit Memo und Edit, bis jetzt klappt alles.
    Danke.



  • mhh sorry bekomm das nicht hin mit

    String text = Memo1->Text;
    

    für eingabe und mit

    Edit1->Text = ....
    Edit2->Text = ....
    

    für ausgaben mit dein Beispiel
    und die bearbeitung da zwischen.
    😞



  • Was bekommst du nicht hin? Die Übertragung der Strings aus dem memo in die Variablen?
    Das geht so

    string text = Memo1->Text.c_str();
    // und umgekehrt für string first
    Edit1->Text = first.c_str();
    

    Bitte beachte auch die Groß- und Kleinschreibung
    String ist etwas ganz anderes als string.



  • yeahhhhhhhhhhhhhhhhhhhhhhhhh
    Klasse.
    Läuft wie gewünscht.
    Ich bedanke mich für deine hilfe und Zeit.
    Einfach klasse. 😃



  • Bitte schön. 🙂


Anmelden zum Antworten