Befehle aus externer Datei einbinden



  • Mist... zu langsam 😉



  • Kuldren schrieb:

    Du müsstest diesen Code dann kompilieren bevor du ihn ausführen könntest...
    Ne Dll vielleicht?
    Aber wenn du diese Frage stellst ist das vlt noch zu schwer für dich...kannst dich damit aber mal vertraut machen.
    Oder du verwendest/schreibst eine Lib die den Inhalt der Datei interpretieren kann und keinerlei Neukompilierung bedarf.

    Wie meinst du das ich muss den Code vorher kompilieren???
    Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon 😉 .



  • Theoretisch möglich ist sowas schon.

    Du hast dabei folgende Möglichkeiten (Auszug)

    1. Schreibe einen Parser der alle Funktionen unterstützt die du brauchst.
    std::ifstream in("dateiname.endung");
    std::string tmp;
    if ((in >> tmp) == "cout")
    {
    
    }
    

    usw.

    Ist schon recht kompliziert.

    1. Du compilierst die datei (inklusiv Wrapper) beim laden und linkst sie dynamisch. Auch nicht wirklich leichter.

    2. Das was du willst sieht sehr nach dem Einbinden einer Skriptsprache aus. z.B. für LUA gibts da bereits fertige Interpreter für C/C++. Möglicherweise lässst sich auch was mit C-Syntax finden.
      _______________

    Du siehst: Es ist theoretisch möglich aber gar nicht so einfach.



  • Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon .

    Dann weißt du ja dass du deinen Code kompilieren musst um dann dein Programm ausführen zu können!
    Also müsstest du den Code aus der Datei ... wenn es denn echter C++ code wäre und keine ausgedachte skript-lib diesen kompilieren...
    Und das zur Laufzeit zu machen wird schwer....



  • Besserwisser;) schrieb:

    Da du C++-Code (Quältext) erst kompilierst, ist das nicht möglich! Der Dateiinhalt müsste ja vor der Ausführung ebenfalls kompiliert werden! Du kannst dir aber eine Scriptsprache ausdenken

    hey danke das ist eine gute idee werd ich direkt mal in die tat umsetzen. 🙂 🙂 🙂



  • Kuldren schrieb:

    Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon .

    Dann weißt du ja dass du deinen Code kompilieren musst um dann dein Programm ausführen zu können!
    Also müsstest du den Code aus der Datei ... wenn es denn echter C++ code wäre und keine ausgedachte skript-lib diesen kompilieren...
    Und das zur Laufzeit zu machen wird schwer....

    Ja sorry ich ich hab dich falsch verstanden



  • @Besserwisser;)
    Das mit dem Scripten verstehe ich soweit aber mit welchem Befehl lese ich die verschiedenen Zeilen?



  • Du kannst (zur Übung) auch versuchen eben LUA zu verwenden, wenn dir deine eigene Skriptsprache nicht ausreicht (was bei Aufgaben die über die Ausgabe des Datums oder eines Namens hinausgehen echt umfangreich werden kann!)

    aber mit welchem Befehl lese ich die verschiedenen Zeilen?

    EDIT: Lass das mit LUA und schau dir lieber ein C++ Tutorial an



  • Kuldren schrieb:

    Oder du verwendest/schreibst eine Lib die den Inhalt der Datei interpretieren kann und keinerlei Neukompilierung bedarf.

    Kannst du mir da irgendein Tutorial oder so was empfehlen?



  • Dirty, aber zweckmäßig:

    // bla, dein Code....
    #include "DeineTextdatei.txt"
    // weiterer Code.
    

    Sobald du die Datei inkludiert hast, wird der Code vom Präprozessor reinkopiert und mitkompiliert 😉





  • mikey schrieb:

    Dirty, aber zweckmäßig:

    // bla, dein Code....
    #include "DeineTextdatei.txt"
    // weiterer Code.
    

    Sobald du die Datei inkludiert hast, wird der Code vom Präprozessor reinkopiert und mitkompiliert 😉

    Das ist allerdings auch nicht schlecht. Muss ich in #include "blabla.txt" den Pfad zur Datei mit angeben?

    #include "C:/.../DeineTextdatei.txt"
    

    Kuldren schrieb:

    Tutorials:
    http://c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index

    Das sagt mir jetzt so direkt auch nichts, könntest du das etwas definieren?



  • Ich versteh nicht, weswegen manche Leute so kompliziert denken.

    Window: Ja, du musst den vollen Pfad angeben, wenn sich die Datei nicht im selben Ordner wie dein Programm befindet.



  • Bin davon ausgegangen dass du während das Programm läuft die Datei verändern möchtest!
    So kannst du ja gleich eine cpp Datei verwenden, denn so kommst du um die Neukmpilierung nicht herum..



  • Kuldren schrieb:

    Bin davon ausgegangen dass du während das Programm läuft die Datei verändern möchtest!
    So kannst du ja gleich eine cpp Datei verwenden..

    Eigentlich war das ja auch so gedacht das die .exe auf die datei zugreift und dann die Befehle ausführt.



  • Aber?



  • Eigentlich war das ja auch so gedacht das die .exe auf die datei zugreift und dann die Befehle ausführt.

    Den Satz kann man jetzt mehrfach interpretieren 😃



  • Also ich versuche es mal in einem zusammenhängenden Text.
    Eigentlich wollte ich eine immer wiederkehrende Befehlsfolge (keine Schleife),
    in mein Programm einfügen.
    Damit ich nicht so viel tippen muss dachte ich es gibt vielleicht einen Befehl der Code aus einer extra dafür geschriebenen Datei ausliest und das ich den Code so immer einfach mit diesem Befehl einbinden kann.
    So habe ich mir das ursprünglich vorgestellt. 😕



  • Also ich versuche es mal in einem zusammenhängenden Text.
    Eigentlich wollte ich eine immer wiederkehrende Befehlsfolge (keine Schleife),
    in mein Programm einfügen.
    Damit ich nicht so viel tippen muss dachte ich es gibt vielleicht einen Befehl der Code aus einer extra dafür geschriebenen Datei ausliest und das ich den Code so immer einfach mit diesem Befehl einbinden kann.
    So habe ich mir das ursprünglich vorgestellt.

    Kennst du Header-dateien bzw einfach Funktionen?
    Also wenn du den geschriebenen Code nicht mehr verändern willst (zur Laufzeit)



  • Kennen ja. Ab er ich weiß nicht wirklich etwas mit denen anzufangen, wie man die schreibt und so meine ich. 😞


Anmelden zum Antworten