Quellcode zur Laufzeit erzeugen ????



  • Hallo,
    ich weiß, dass es total unlogisch ist, aber kann man während der Laufzeit (also nach dem Compilieren) Quellcode einfügen, z.B. aus einer StringList oder ähnliches??? Das wäre die absolute Problemlösung meiner Sorgen. Ich erzeuge nämlich dynamisch mehrere unterschiedliche Komponenten und empfange über die serielle Schnittstelle unterschiedlichste Werte für diese Komponenten. Leider habe ich sehr viele Probleme die Werte auch den richtigen Komponenten zuzuweisen. Deshalb dachte ich mir, dass es evtl. möglich sei direkt beim Erzeugen zusätzlich Quellcode einzufügen, um die Zuordnung besser realisieren zu können.

    Danke und Gruß



  • Nein, kann man nicht. Aber gib mal ein kleines Beispiel. Vielleicht können wir dir auch so helfen.



  • Nun,
    es ist so. Ich lese eine Text-Datei ein, in der deklariert ist, wieviele Labels, Edit-Fenster, Buttons etc. dargestellt werden müssen. Exakt nach dieser Textdatei erstelle ich ebenfalls ein 2-dimensionales Feld, in dem dann genausoviele Integerwerte abgelegt sind, die dann den einzelnen Objekten zugeordnet werden müssen.
    Zum Beispiel habe ich 3 Labels, 8 Edits und diverse andere Objekte aus Zusatzmodulen, die die visuelle Anzeige darstellen sollen. Wenn ich also beispielsweise 30 Objekte habe besitzt das Feld ebenfalls eine Größe von 30. Die Objekte werden in einer Schleife erzeugt, die solange weiterläuft wie Zeilen in der Textdatei sind. Es gibt also eine genaue Zuordnung zwischen Zeilennummer und Objektnummer. Dennoch bekomme ich eine fehlerfreie und dynamische Wertzuweisung nicht hin. Die Werte müssen auch immer unterschiedlich übergeben werden, im Label nach ->Caption, im Edit nach ->Text usw.

    Für Hilfe wär ich dankbar, den Quellcode hab ich nicht zur Hand, den kannich erst morgen liefern.

    Dank und Gruß



  • OK, hab da schon sone Idee. Wie sieht denn eine Zeile deiner Textdatei aus?



  • Eine Zeile sieht etwa so aus. Interessant für die Zuordnung wäre wohl die 0012, das ist die laufende Nummer (Zeile) der Datei, danach kommt die Beschriftung des Labels. Die anderen Zeilen sehen genauso aus, zuerst steht die Objektart, die nächsten 4 Sachen brauch ich für etwas anderes, dann kommt die Zeilennummer und am Ende die Beschriftung.

    Label | X | % | X | 1 | 0012 |Zusatz 1 Sollwert



  • Dann musst du ja eh ordentlich parsen. Was spricht z.B. gegen

    AnsiString className;
    // Der Klassenname wird in className gespeichert
    AnsiString caption;
    // die Beschriftung wird in caption gespeichert
    if(className == "Label")
    {
       TLabel* l = new TLabel(this);
       l->Caption = caption;
       ...
    }
    if(className == "TEdit")
    {
       TEdit* e = new TEdit(this);
       e->Text = caption;
       ...
    }
    

    Usw. ? Ist doch OK, oder?



  • Original erstellt von WebFritzi:
    Ist doch OK, oder?

    else if 😉

    Ansonsten sollten die einzelnen Objektgruppen vielleicht besser jeweils als dynamische Arrays erstellt werden, um den Zugriff darauf zu erleichtern.


Anmelden zum Antworten