Text als Code interpretieren
-
Hallo
ich hoffe ich bin hier im richtigen Thema:
Ich mache gerade meine Assistentenprüfung mit dem Borland C++Builder 5.0.
Dazu soll ich ein Tool erstellen, das es ermöglicht ein Fenster zu designen mit Edits, Buttons, Charts, Labels und irgendwann später mehr. Per Rechtsklick sollen einige Eigenschaften angezeigt (StringGrid, 2 Spalten)und verändert werden können(ähnlich Objektinspektor). Diese Eigenschaften werden aus einer *.ini Textdatei gelesen und in eine StringList geschrieben. Dies funktioniert bisher soweit, dass die Bezeichnungen der Eigenschaften, z.B. "Left" in die linke Spalte geschrieben werden. D.h. verändert man die Textdatei, verändert sich die Tabelle. Nun soll aber dazu passend die rechte Spalte befüllt werden. Dazu wäre es praktisch, den String der StringList als Code darstellen zu können.
Bsp.
Edit->Top soll werden zu Edit->(MyStringlist->Strings[0]),
wobei Strings[0]="Top" ist.
Damit könnte man das einfach in einer Schleife abarbeiten.Oder ähnliches Problem: Man sollte so eine Art Platzhalter für Code haben:
MyStringGrid->Cells[1][1]=dynamic_cast <TEdit*>(Sender)->Top;
soll TEdit* nacheinander(z.B.in einer for Schleife) TChart*, TButton* usw werden können, wobei diese Klassen/Zeiger auch wieder in einer Textdatei stehen.Ziel ist, das Programm so dynamisch zu programmieren, dass man anschließend nur eine Änderung in der Textdatei vornimmt, z.B. eine Eigenschaft hinzufügt und diese Eigenschaft taucht dann im StringGrid auf und kann verändert werden. Oder man fügt einen neuen Zeiger ein z.B. TSpeedButton* und man kann dann auch Speedbuttons einfügen. Das Tool an sich hat Ähnlichkeit mit dem Borland Compiler, wo man auch Elemente einfügen kann und im Objektinspektor ändern kann. Zweck ist schließlich, eine weitere Textdatei zu generieren, wo die eingefügten Elemente mit den gewählten Eigenschaften auftauchen. Ein anderes Programm braucht dann diese Textdatei.
Ich würde mich über Hilfe freuen. Weil alternativ muss man für jedes Element alles voll durchprogrammieren, um irgendwann einmal eine Eigenschaft des Elements in der Textdatei aktivieren zu können.
Ich hab jetzt viel zum Programm gesagt, wollte nur nochmal das Problem erwähnen, dass ich einen AnsiString als Code interpretieren können sollte.Vielen Dank im Voraus für eure Hilfe
Michael V.
-
-
Ja, das geht in Richtung Compilerbau, das hab ich vermutet;
aber gibt es für mich eine Möglichkeit, das Problem zu lösen ohne einen eigenen Compiler zu bauen. Das Stichwort hat mir in der Borland Hilfe keine Lösung des Problems offerieren können.
Ein Code Beispiel könnte hilfreich sein.
-
Hallo
ein Parser alleine macht noch keinen Compiler...
und bei de Flexibilität brauchst du auch etwas Parserartiges.Letztendlich kommst es nur drauf an, das du auf der geladenen Definitionsdatei mit den AnsiString-Methoden nach den Schlüsselworten suchst und diese dann mitsamt Parametern auswertest.
Und nein es gibt auch keine einfacher, eingebaute Möglichkeit. Du willst ja quasi einen Runtime-Interpreter haben.
bis bald
akari
-