Code: Alles auswählen
DataSection
Data.a "Dies ist ein ASCII-String"
EndDataSection
Wenn Lua ein "module" bzw. "package" über den require Befehl anfordert, sollte man schnellstmöglich alle Tabellen mit Namen und Adressen der Modulfunktionen setzen. Dafür bietet die API eine Funktion Namens "luaL_newlibtable", welche ein Array aus solchen Paaren in einem Durchgang abarbeitet. Das Problem war jetzt nur, daß Lua eben intern Ascii benutzt.
Ich dachte ich müßte entweder klassisch für jede Procedure 3 Befehle in einem Loop aufrufen, oder die Registry im Ram anlegen. Aber jetzt geht es ja wie gewünscht mit DataSection
Code: Alles auswählen
; --------
; Ascii-Strings in DataSection
; --------
Macro _moduledq()
"
EndMacro
Macro _modentry( name )
Data.a _moduledq()name#_moduledq(): Data.i @tolua_#name()
EndMacro
; --------
ProcedureC tolua_myproc(*L)
EndProcedure
ProcedureC tolua_myproc2(*L)
EndProcedure
ProcedureC tolua_myproc3(*L)
EndProcedure
; --------
DataSection
lua_module:
Data.a "mypröc" : Data.i @tolua_myproc()
_modentry(myproc2)
_modentry(myproc3)
Data.a "noproc" : Data.i 0
Data.i 0,0
EndDataSection
; Test:
Debug "Ascii:"+PeekS(?lua_module,-1,#PB_Ascii)
Debug "UTF8:"+PeekS(?lua_module,-1,#PB_UTF8)
; Auslesen und ausgeben
Restore lua_module
Repeat
Debug "----"
name$=""
c.a
Repeat
Read.a c
If c
name$=name$+Chr(c)
EndIf
Until c=0
Read.i addr
Debug "name:" +name$
Debug "addr: "+addr
Until name$=""
So ich mach dann mal weiter ^^