"A" bis "B" im RichEdit herausfinden



  • Hi, ich habe ein RichEdit mit einem HTML-Quelltext. Aus diesem möchte ich alle Kommentare löschen, die durch ein beginnenden <!-- und ein endendes --> gekennzeichnet sind. Ich würde euch bitten, mir nen kurzen Codeschnipsel dafür zu geben, damit alle Kommentare gelöscht werden.



  • AnsiString::Pos
    TRichEdit::Text

    ...und ab in die Borland Hilfe (-;

    -junix



  • Wi biddä? Plz gebt mir doch dises eine Mal den code.



  • Aus der Borlandhilfe:

    AnsiString:
    Die Methode Pos gibt den Index der Position zurück, an dem der angegebene Teilstring beginnt.
    <edit>überflüssigen Quote aus der Hilfe entfernt. Die hatjeder zu Hause (-;</edit>
    ... und da Text des TRichEdit ein AnsiString ist, kannst du da fröhlich mit den o.g. AnsiString Funktionen rumschnippeln.

    Such einfach mit Pos den Anfang und den Ende eines Kommentars und lösche den Teil dann mit Delete....
    Ist zwar nicht sonderlich fantasievoll aber es funktioniert. 😃

    [ Dieser Beitrag wurde am 05.03.2003 um 18:44 Uhr von junix editiert. ]



  • Wenn du schon ein RichEdit hast dann würd' ich doch FindText benützten.

    Guck doch mal in der BCB Hilfe 😃 😃 unter TCustomRichEdit::FindText ... hat sogar noch ein Beispiel



  • int pos1 = dynamic_cast< TChildForm* >( ActiveMDIChild )->Editor->Text.Pos( '<!--' );
            int pos2 = dynamic_cast< TChildForm* >( ActiveMDIChild )->Editor->Text.Pos( '-->' );
            AnsiString text = dynamic_cast< TChildForm* >( ActiveMDIChild )->Editor->Text.Delete( pos1, pos2 - pos 1 );
    
        for( int i = 0; i < 10; i++ )
        {
            int pos1 = text.Pos( '<!--' );
            int pos2 = text.Pos( '-->' );
            text = text.Delete( pos1, pos2 - pos 1 );
        }
    

    Editor ist das RichEdit des aktuellen Childs.

    Funktioniert der Code wie ich ihn gerade gepostet habe, dass alle Kommentare (<!-- bis --> ) gelöscht werden?



  • Wie wär's mit Ausprobieren/Testen?



  • @Junix

    *g*
    Klar hat es jeder zuhause.. aber manche finden wohl den Weg bis zur F1-Taste nicht 😃
    Und da ich zu faul war den Code zu schreiben... 😉



  • Funktioniert der Code wie ich ihn gerade gepostet habe, dass alle Kommentare (<!-- bis --> ) gelöscht werden?

    Nein! 🙂

    11 Kommentare lassen sich wohl kaum rauslöschen wenn man die Schleife auf statitsche 10 Durchläufe begrenzt.
    Außerdem werden Strings in " " eingeschlossen nicht in ' ' .
    Bei deinem Delete wird der abschließende Pfeil nicht gelöscht, da ja nur bis pos2 gelöscht wird und das ist das Zeichen vor dem zweiten Pfeil.

    last not least raucht das Programm ab wenn pos2 kleiner pos1 ist..wenn der abschließede Pfeil also vor dem Anfangspfeil gefunden wird, was ja durchaus passieren könnte

    [ Dieser Beitrag wurde am 06.03.2003 um 10:42 Uhr von crass editiert. ]


Anmelden zum Antworten