Ascii Strings in DataSection (Tipp)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Ascii Strings in DataSection (Tipp)

Beitrag von Benubi »

Hallo,

Code: Alles auswählen

DataSection
  Data.a "Dies ist ein ASCII-String" 
EndDataSection
Ich bin gerade dabei die lua 5.3.5 dll manuell einzubinden. Und lerne ne Menge dazu... hey!

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 ^^