Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 20.02.13 20:43 
Hi,

wahrscheinlich ist der Titel etwas ungenau und nicht aussagekräftig, ich bitte um Entschuldigung :oops:
Auch im Internet finde ich nichts, was meinem Vorhaben nahe kommt, denn ich möchte gerne über eine externe (also nicht mit-kompilierte) Datei Variablen ansprechen.
Somit möchte ich die Möglichkeit haben, das fertige, kompilierte Programm zu verändern.
Dafür reichen leider keine ini-Dateien oder Datenbanken, denn ich müsste damit eine recht komplexe Struktur (Grundfunktionen von If-Else-Anweisungen, auch mit entsprechender Verschatlung) parsen.
Dabei soll der User verschiedene Variablen ansprechen können (so um die 30-40) und diese in einem logischen Zusammenhang verbinden können.
Leider fehlt mir jeglicher Ansatz, ich weiß auch, dass intern nicht mit Variablennamen gearbeitet wird und ich diese daher von Außerhalb nicht ändern kann.
Wenn jemand ein paar Schlagworte oder Ideen hat, wäre ich sehr dankbar :)

lg
Jon Good
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22
Erhaltene Danke: 2



BeitragVerfasst: Mi 20.02.13 21:12 
Hi,

das Stichwort dazu ist "Scripting". Du willst also Unterprogramme in deinem Programm zulassen. Schau dich mal nach Script Engine um. Gibt die eine oder andere - beispielsweise Pascal Script von RemObjects, oder wenn dir Projekte aus der Community lieber sind: ScriptEngine2 von littleDave.

- Jon

Für diesen Beitrag haben gedankt: HenryHux
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 20.02.13 21:22 
Vielen Dank, ich werde mich mal reinlesen und ggf. hier zurückmelden :)

lg
Jon Good
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22
Erhaltene Danke: 2



BeitragVerfasst: Mi 20.02.13 23:08 
Wenn du etwas wie ein Plugin-System machen möchtest, sind die Themen über Plugins, Addons, Addins sicher interessant für dich. Dies ist prinzipiell auch über Scriptengines lösbar, allerdings bauen viele Lösungsansätze auf DLLs auf.

Eine weitere Scripting-Lösung bietet Lua4Delphi. Davon gibt es AFAIK 2 unabhängige Varianten. Lua4Delphi.com und Lua4Delphi on Sourceforge

Wie du siehst: Ohne weitere Informationen über deine Absichten ist es schwer eine konkrete Antwort abzugeben, dich auf mögliche Fehler / Schwierigkeiten hinzuweisen, oder dir andere Lösungsansätze aufzuzeigen.

- Jon

Für diesen Beitrag haben gedankt: HenryHux
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 20.02.13 23:45 
Ich habe mich mal ein wenig umgeguckt, bin mir aber unsicher was die beste Variante ist..
Zumindest habe ich vor ca einem Jahr ein Poker-Spiel entwickelt, bei dem eine KI antritt.
Diese wird größtenteils über große Blöcke von if-then-else angewiesen.
Ohne Zweifel hätte es da bessere bzw. andere Möglichkeiten gegeben, aber nun ist es so und so gut ausgearbeitet, dass eine Neukonzeption für mich nicht in Frage kommt.
Wie gesagt, ich habe viele Anweisungen, in denen ich auf alle Variablen des Spieles zugreifen muss, um von "außen" den Spieler zu verändern..
Jon Good
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22
Erhaltene Danke: 2



BeitragVerfasst: Do 21.02.13 00:06 
OK, allerdings stellt sich mir jetzt die Frage: Möchtest du nach einem Spielzug die Variablen ändern oder soll die Veränderung als festes Programm ablaufen? Vielleicht kannst du einen konkreten Fall schildern, und anhand dieses Beispieles erklären, was du wann gerne machen würdest, dir aber bisher nicht möglich bzw. nur sehr umständlich möglich ist.

- Jon
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 21.02.13 13:52 
Naja, zu jeder neuen Hand werden Karten zugewiesen, sprich jeder Spieler kriegt eine bestimmte Anzahl Karten.
Dann fängt der erste Spieler an, seine Aktion zu setzen. Dabei gibt es für jede mögliche Spielsituation eine eigene Funktion die aufgerufen wird, und einen Wert zurückgibt (1, 2 oder 3, beschreiben Karten weglegen, checken/callen und erhöhen). Dieser Funktion wird beim Aufruf ein Record übergeben, der immer die gleiche Form hat, halt nur bei jedem Funktionsaufruf verschiedene Werte besitzt.
Und genau diese Funktionen (es sind so um die 50) möchte ich auslagern.
Ich bräuchte also ein Script, welches alle Variablen dieses Records verarbeiten kann und einen Integer und String Wert zurückgeben kann.

lg :)
Jon Good
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22
Erhaltene Danke: 2



BeitragVerfasst: Do 21.02.13 13:59 
So wie ich es verstehe, willst du die KI aus dem Programmcode auslagern. Das kannst du über eine DLL machen (wenn die KI nicht mehr verändert werden soll) oder über eine Scriptengine (wenn der Benutzer selbst auch Änderungen daran vornehmen können soll; für diesen Fall würde ich dir SE2 von littleDave empfehlen).

- Jon