C++ Editor



  • Hallo,

    Ich arbeite zur Zeit an einem Texteditor in ANSI C++, also Plattformunabhängig¹.
    Ich bräuchte jetzt Ideen, wie ich am besten das Eingabefeld realisieren könnte,
    also das Feld, in dem der User seinen Text verfassen wird 🙂 .
    Doch da kommen schon die ersten Probleme auf. Nehmen wir an der User
    schreibt einen Text:

    Hallo C++-Forum, ich wäre für jede Ide <jetzt drückt der User ENTER>
    dankbar, die ihr mir....
    <Und hier merkt der User, dass er "Idee"nur mit einem E geschrieben hat,
    jetzt stellt sich die Frage, wie zu dieser Stelle kommen, um sie zu korrigieren?>
    

    So die 2. Sache wäre auch dieser Fall.
    Wenn der benutzer fertig ist, soll er mit Hilfe einer Tastenkombination, dem Programm
    "sagen" das es jetzt diesen Text speichern soll. Aber da eine Tastenabfrage meines Wissen nicht in Standard C++ realisierbar ist, wäre ich gezwugnen auf eine Abhängige?
    Bilbiothek zu zugreifen. Wer hat hier zu eine Idee, dieses zu umgehen.

    Danke



  • da standard c++ kein gui kennt, musst du doch eh ein toolkit dafuer nehmen. und da gibts dann bestimmt auch entsprechende ereignisse.



  • Sind euch die Ideen ausgegangen oder was?!



  • Junge, wie willst du ein Ereignishandling mit reinem ANSI-C++ realisieren?
    Eben aus solchen Gründen wurden Bibliotheken entwickelt, welche diese Art von Arbeit um ein vielfaches vereinfachen. Diese Bibliotheken gibt es für die Konsole ebenso wie für grafische Oberflächen...

    Ich sag mal wie ich es machen würde: Ich würde einen Editor mit GUI erstellen, wobei ich wxWindows für die GUI nehmen würde (so habe ich auch die Möglichket den Code ohne großen Aufwand unter Linux/Unix zu kompilieren). Das "Backend" würde ich natürlich in ANSI C++ schreiben, wobei ich verschiedene Callback-Funktionen implementieren würde um mit der GUI zu kommunizieren.
    So kannst du die Ereignisse mit der GUI behandeln und der Rest wäre immer noch portabel für andere Systeme...

    schau mal unter www.wxwindows.org vorbei 😉



  • Da fällt mir noch was ein, wenn du doch keine GUI nehmen willst:
    Du könntest jeden Tastendruck durch eine switch-case Anweisung laufen lassen und die F-Tasten für besondere Funktionen nutzen.
    Wobei du glaube ich aber dennoch auf eine System-Bibliothek zugreifen müsstest, da sich die Key-Codes von System zu System auch unterscheiden.
    [Jungs, bitte berichtigt mich wenn ich falsch liege 🙄 ]



  • du musst dir ein System einfallen lassen, was ähnlich arbeitet wie ed

    du kannst zB. zwischen edit und command modus Unterscheiden. Zwischen den Modi wechselt man einfach mit einem ! als erstem Zeichen der Zeile hin und her (wenn man da wirklich eins haben möchte macht man eben 2 ! und der Editor wandelt das in 1 ! um)

    dann kannst du eine Kommando Sprache einführen, mit der du Zeichen an bestimmten Stellen löschen kannst

    ein Beispiel, wie das aussehen könnte
    (> am Anfang der Zeile ist Kommando Modus und : ist Text Modus)

    > !
    : Hallo World
    : !
    > replace('Ha','He')
    > !
    : Die Ide ist grausig aber auch lustig
    : blablablub
    : !
    > insert(line[2],pos[8],'e')
    > !
    : Zeile mit ! folgt
    : !!!!
    : !
    > exit
    

    dann steht in dem Text

    Hello World
    Die Idee ist grausig aber auch lustig
    blablablub
    !!!
    

    schau dir vielleicht auch mal TECO an um die inspirieren zu lassen 😉 😉 🙂



  • @kingruedi: hey, gute idee 😃
    also so wie bei vim...

    damit wäre die navigation auch gleich gelöst.
    aber mit einer GUI wäre es immer noch eine elegantere lösung, oder?



  • shadow schrieb:

    aber mit einer GUI wäre es immer noch eine elegantere lösung, oder?

    Nein. Der GUI Editor wer zwar einfacher, aber mein Editor hat noch den Effekt, dass nicht jeder Trottel ihn benutzen kann und man sich richtig gut fühlen kann, wenn man es ohne Wutanfall schafft einen 3 Seitigen DIN A4 Text zu schreiben 🙂

    Außerdem ist meins Platformunabhängiger 🙂


Anmelden zum Antworten