Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

16.5: FreeBASIC-Funktion im Skript einbinden

Uploader:Redakteurnemored
Datum/Zeit:24.08.2013 16:54:12
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.

' *** CODE 16.5: FreeBASIC-Funktion im Skript einbinden

' **********************
' * FreeBASIC-Programm *
' **********************
#include once "Lua/lua.bi"
#include once "Lua/lauxlib.bi"
#include once "Lua/lualib.bi"

function minmax cdecl (byval L as lua_State ptr) as long
  dim numpar as integer
  dim i as integer
  dim num as double
  dim maxnum as double
  dim minnum as double

  ' Anzahl der Parameter ermitteln
  numpar = lua_gettop(L)

  ' Alle Parameter auslesen und auswerten
  minnum = lua_tonumber(L, 1)
  maxnum = lua_tonumber(L, 1)
  for i = 1 to numpar
    ' Parameter aus dem Stack holen
    num = lua_tonumber(L, i)

    if num > maxnum then maxnum = num
    if num < minnum then minnum = num
  next i

  ' Ergebnis auf den Stack legen
  lua_pushnumber(L, minnum)
  lua_pushnumber(L, maxnum)

  ' Anzahl der Parameter zurueckgeben
  return 2
end function

dim Lua as lua_State ptr
Lua = luaL_newstate
luaopen_base(Lua)                     ' "base lua library" laden (fuer 'print')
lua_register(Lua, "MinMax", @minmax)  ' FB-Funktion fuer Lua registrieren

if luaL_dofile(Lua, "minmax.lua") then
  print "Skriptfehler: " & *lua_tostring(Lua, -1)
end if
lua_close Lua                         ' Lua-Status freigeben
getkey



' **********************
' *     Lua-Script     *
' **********************
Min, Max = MinMax(42, 2, 17, 33, 15, 1.5)
print("Lua: Min= ", Min, ", Max= ", Max, "\n")