Programm zur Laufzeit editieren. Wie???



  • Hallo,
    ich überlege grade wie ich folgendes umsetzen kann:
    Ein Programm das dem Benutzer erlaubt den Ablauf des Programms zu steuern.
    Konkretes Beispiel:
    Ich habe eine Bibliothek (in DLL Form) von Funktionen die in C, C++ und in C# vorliegt - für jede Sprache eine eigene Dll.
    Ich möchte dem benutzer meines Programms erlauben diese Funktionen aufzurufen - oder besser gesagt, es soll möglich sein daraus ein eigenes programm zur Laufzeit zu schreiben.
    Also wenn meine Dll diese funktionen hat:
    GetImage(source)
    FilterImage(FilterType)
    ShowImage();
    usw.
    möchte ich dem benutzer erlauben die Reihenfolge und die Bedingung (if,while....) der Funktionsaufrufe selber festzulegen. Einerseits sollte das Pregramm sofort zur laufzeit interpretiert werden andrerseits muss ich eine Art hoch performanten Code daraus generieren können.(Nicht gleichzeitig sondern auf Knopfdruck, also 2 modi)
    Gibt es tools die das können oder muss ich es selber schreiben.
    Ich bin dankbar für jede Hilfe in jede Richtung.
    Danke.



  • Du könntest den User die Ausdrücke in einer Skriptsprache schreiben lassen, z.B. Lua, Python oder Javascript. Die kannst du dann on-the-fly ausführen, der Umgebung musst du dann nur die Interaktion mit den Funktionen deiner DLLs erlauben.



  • Denkanstatz kann eine Bibliothek/Baukasten mit Elementen sein, die du flexibel verkettest. Es gibt komplexere Frameworks die so ein Konzept verwenden. Z.B. http://de.wikipedia.org/wiki/GStreamer oder http://de.wikipedia.org/wiki/Phonon_%28KDE%29



  • Wie funktioniert das denn,
    angenommen ich habe ein Fenster in das der Benutzer die Namen der Funktionen in der gewünschten Reihenfolge eintippt. Was muss dann passieren? Muss mein Programm in einer riesigen if Anweisung dann den Funktionsnamen vergleichen und dann die entsprechende Funktion in der DLL suchen und ausführen?
    Ich muss zugeben ich habe mich noch nie mit Scriptsprachen auseinandergesetzt und habe deswegen überhaupr keine Ahnung wo ich anfangen soll


  • Mod

    Muss mein Programm in einer riesigen if Anweisung dann den Funktionsnamen vergleichen und dann die entsprechende Funktion in der DLL suchen und ausführen?

    Im Prinzip ja. Das geht natürlich auch eine ganze Ecke eleganter, als die if-Anweisungen explizit hinzuschreiben. Du kannst hoffentlich genug programmieren, dass dir dies klar ist, bevor du dich an ein scriptgesteuertes Programm heran wagst.

    Außerdem nehmen dir die Bibliotheken für die bekannten Scriptsprachen schon den Großteil der Arbeit ab, du musst bloß noch deine eigenen Erweiterungen bei diesen melden.



  • Ich kann zwar eingermassen Programmieren, konnte mich aber nie richtig in irgendeine Sprache bis zum letzten Ende reinsteigenrn (hängt irgendwie mit meinem Arbeitgeber zusammen)

    Jetzt wird mir aber einiges klar Scriptsprachen haben also Bibliotheken die Funktionen enthalten um mir die if Anweisungen zu ersparen.

    Du musst verstehen ich bin kein gelernter Informatiker, aber beruflich bin ich irgendwie da gelandet und bin der einzige der überhaupt schonmal ein Programm geschrieben hat in unserem 500Mann unternehmen, dementsprechend sind die erwartungen an mich sehr hoch, da hier kein Mensch vesteht wie überhaupt ein Programm entsteht geschweige denn was Dlls sind oder wie man diese benutzt.

    Ich werde mir die Scriptsprachen mal anschauen danke.



  • Ich will dein Engagement ja nicht bremsen. Aber sollte die Software für deine Firma wichtig sein, dann beauftrage ein Ingenieurbüro. Das ist unterm Strich billiger und besser.



  • danke für deine Tipps aber das gute an meinem Unternehmen ist die lassen mir in dieser Hinsicht völlig freie Hand- ich habe soviel Zeit wie ich brauche. Am Ende sollte bloß ein ergebnis da sein. Davon abgesehen ist es eine Art NebenProject und hier habe ich besonders freie Hand. Ich wollte im letzten Post auch nicht herausstellen wie schwer ich armes Würstchen es doch habe sondern das ich es nicht gelernt habe, kleine Progremme in den C Sprachen zwar schreiben kann aber mir der Gesamtüberplick fehlt.



  • Das CERN hat soetwas ähnliches im Einsatz.
    http://en.wikipedia.org/wiki/CINT
    Vielleicht kannst du das ja für deinen Anwendungszweck einsetzen bzw. im Sourcecode Ideen finden. Ist OpenSource.



  • Wow danke für den Link, damit kann ich bestimmt was anfangen.



  • Habe jetz die perfekte Lösung für mich gefunden.
    Passt zwar nicht ganz ins C++ board aber .Net wird hier ja auch behandelt.
    Die lösung ist der .Net compiler den ich zur Laufzeit compilieren lassen kann,
    habe schon eine TestApp geschrieben und es funktioniert wunderbar.
    Danke für die Tipps
    Gruß.


Log in to reply