Texteditor - Suchen+Ersetzen implementieren



  • Hi

    Ich habe unter Borland C++ Builder 6 einen kleinen Texteditor ähnlich dem Windows Editor geschrieben. Leider funktioniert die "Text ersetzten" Funktion nicht. Für einen Profi dürfte es wahrscheinlich kein Problem darstellen mir zu helfen. Es steckt nur ein kleiner Fehler drinn, den ich seit Stunden zu finden versuche.

    Hier das Projekt:
    http://rapidshare.com/files/9906791/endversion2.zip.html

    Fehlerbeschreibung:
    Wenn man eine Textdatei öffnet und dann auf Datei-->Ersetzen geht, kann man zwar nach einem Wort suchen. Wenn man das Wort gefunden hat, kann man es aber nur einmal ersetzen. Weitere gesuchte Wörter lassen sich nicht ersetzen.

    "void __fastcall TForm1::SearchReplace1ReplaceDialogReplace(TObject *Sender)"
    aus Zeile 206 von "Editor.cpp" wird nie ausgeführt???? - da liegt der Fehler.
    Ich weiß aber nicht warum er nicht die 206te Zeile ausführt.

    Zu öffnen ist das Projekt über "mEditor.bpr"

    Vielen Dank schonmal
    mfg 🙂

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • Das komplette Projekt bereitzustellen ist hilfreich, als Grundlage sollte aber doch hier der entsprechende Codeabschnitt mit entsprechenden Erläuterungen gezeigt werden.



  • der Fehler liegt im SearchReplace1ReplaceDialogReplace, was nie ausgelöst wird, anscheinend ein Fehler in der VCL-Komponente

    bau mal in dein Formular einen TReplaceDialog ein und verwende dort die Ereignisse OnFind und OnReplace mit deinem Quellcode, wobei das "SearchReplace1->Dialog" dann durch "ReplaceDialog1" und "SearchReplace1ReplaceDialogFind" durch "ReplaceDialog1Find" ersetzt werden müßte

    um den ReplaceDialog aus dem Menü auszuführen mußt du dem entsprechenden Menüpunkt nur folgeden Code zuordnen

    ReplaceDialog1->Execute();
    

    und schon funktioniert alles so wie gewünscht



  • Linnea schrieb:

    der Fehler liegt im SearchReplace1ReplaceDialogReplace, was nie ausgelöst wird, anscheinend ein Fehler in der VCL-Komponente

    bau mal in dein Formular einen TReplaceDialog ein und verwende dort die Ereignisse OnFind und OnReplace mit deinem Quellcode, wobei das "SearchReplace1->Dialog" dann durch "ReplaceDialog1" und "SearchReplace1ReplaceDialogFind" durch "ReplaceDialog1Find" ersetzt werden müßte

    um den ReplaceDialog aus dem Menü auszuführen mußt du dem entsprechenden Menüpunkt nur folgeden Code zuordnen

    ReplaceDialog1->Execute();
    

    und schon funktioniert alles so wie gewünscht

    Hi
    Danke!
    so gehts
    Der Fehler kam mir schon immer spanisch vor.
    mfg


Anmelden zum Antworten