Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi und Lua - Lua soll Variable zurückgeben (https://www.delphipraxis.net/139284-delphi-und-lua-lua-soll-variable-zurueckgeben.html)

FireOfSorrow 26. Aug 2009 06:31


Delphi und Lua - Lua soll Variable zurückgeben
 
Ich habe angefangen ein kleines Programm zu schreiben, welches mit Lua skriptbar sein soll. Dabei möchte ich, dass von Delphi aus eine Lua Funktion (mit mehreren Parametern) aufgerufen wird und diese dann einen String zurückgibt.
lua_pushstring verwende ich auch um die Parameter zu übergeben usw.
Nun kann man ja per
lua_pushcfunction(luastate, funktion)
lua_setglobal(luastate, 'funktionsname');
machen, das Lua eine Delphi Funktion aufruft. Wie kann man nun allerdings einstellen, das dies mit Parametern funktioniert, und wie, dass diese Funktion etwas auf der GUI macht? Klar, eine Funktion gibt etwas zurück, aber gibt diese Funktion das an das Lua Skript oder an die Prozedur in der das Lua Skript aufgerufen wurde zurück?

FireOfSorrow 27. Aug 2009 16:11

Re: Delphi und Lua - Lua soll Variable zurückgeben
 
ich push das mal

shmia 27. Aug 2009 17:18

Re: Delphi und Lua - Lua soll Variable zurückgeben
 
Wie kannst du denn in Lua eine Funktion aus einer DLL ausrufen?
Es ist wohl ein Aufruf an LoadLibrary und dann GetProcAddress nötig.
GetProcAddresse liefert einen Zeiger auf die Einsprungsadresse.

Wenn du weisst wie das in Lua geht, dann sollte es auch möglich sein,
eine Funktion aus einer Delphi Anwendung aufzurufen.

Medium 27. Aug 2009 18:03

Re: Delphi und Lua - Lua soll Variable zurückgeben
 
Soweit ich mich erinnere - ist auch schon 1-2 LUA Versionen her wieder - ist es ja möglich Variablen, insbesondere Tabellen zwischen LUA und Host zu sharen, bzw. aus dem Host heraus diese auszulesen. Also wäre ein einfacher Workaround statt Funktionsparameter Werte einer Tabelle zu setzen, und die betreffende Delphi-Funktion liest sich diese dann wieder aus. Anhand dieser Werte kannst du dann ja lustig in deiner GUI wurschteln :), aber direkt per Aufruf aus LUA wird das nichts. Du musst dir das schon in Delphi-Funktionen wrappen die letztlich auf die Objekte im Host zugreifen.
Das könntest du dir dann auch nochmals in eine kleine LUA-Lib wrappen, die LUA Funktionen mit Parametern entgegen nimmt, und dann transparent diese Tabellen versorgt und den Aufruf weiterleitet.

Ich kann mir vorstellen, dass es evtl. wirklich einen "direkteren" Weg geben könnte, aber so ginge es auch.

FireOfSorrow 28. Aug 2009 05:39

Re: Delphi und Lua - Lua soll Variable zurückgeben
 
Es muss auf jeden Fall einen direkteren Weg geben. Nur welcher dieser ist...
Ich will ja nicht nur dass Lua die GUI verändert, sondern man mit Lua direkt auf ein Ereignis reagieren kann.
Z.b. eine IRC Nachricht kommt an, wird an Lua gesendet, per Lua kann man Skripten wie man auf sie reagiert , die Reaktion wird an Delphi zurück gegeben und von da aus zurückgesendet.
Mit der ersten Methode würde es daher nicht gehen, da ich die Variablen ja ständig auslesen müsste und somit ziemlich viel altes Zeugs senden würde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz