Aktuelle Zeit: 03.06.2020 12:41

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Ascii Strings in DataSection (Tipp)
BeitragVerfasst: 04.02.2020 23:06 
Offline

Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding
Hallo,

Code:
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:
; --------
; 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 ^^


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye