Einzelnen Beitrag anzeigen

Berlinermauer

Registriert seit: 3. Okt 2007
Ort: 0x0000
213 Beiträge
 
Delphi 7 Personal
 
#1

LUA will die Funktion nicht ausführen.

  Alt 7. Dez 2009, 21:10
Soo,
ich habe mir ein Tutorial dazu angesehen, fast alles genauso gemacht,
aber der Text erscheint nicht :[

Hier mal der Delphi Code:

Delphi-Quellcode:
unit scripting;

interface
uses LUA;

procedure InitScripts;
procedure CloseScripts;
procedure LoadScript(Scriptname: String);
procedure PublishFunctions;
// ### Here comes the Functions accessable from lua ###
function DisplayText(L: Lua_State):integer;cdecl;

Var
Lua_Instance: Lua_State;

implementation
uses
Unit1;

procedure InitScripts;
begin
  Lua_Instance := Lua_Open;
  LuaOpen_Base(Lua_Instance);
end;

procedure CloseScripts;
begin
  Lua_Close(Lua_Instance);
  Lua_Instance := nil;
end;

procedure LoadScript(Scriptname: String);
var
Sucess: Integer;
begin
  Sucess := Lua_DoFile(Lua_Instance, PChar(Scriptname));

  if Sucess = 2 then
    Form1.DisplayText(1,0,0,2,'The loading of the Script "' + Scriptname + '" failed!');
end;

procedure PublishFunctions;
begin
lua_pushcfunction( Lua_Instance, DisplayText);
lua_setglobal( Lua_Instance, 'DisplayText' );
end;

function DisplayText(L: Lua_State):integer;cdecl;
var
ArgCount: Integer;
Red,Blue,Green,Thickness : Single;
Text: String;
begin
  argCount := Lua_GetTop(L); // Anzahl Parameter

  if argCount = 5 then begin
     Red := Lua_ToNumber(L,1);
     Green := Lua_ToNumber(L,2);
     Blue := Lua_ToNumber(L,3);
     Thickness := Lua_ToNumber(L,4);
     Text := Lua_ToString(L,5);

     Form1.DisplayText(Red,Green,Blue,Thickness,Text);
  end;

  Lua_Pop(L, argCount);

  Result := 0;
end;

end.
Soo
Der Inhalt der LUA is lediglich
Code:
DisplayText(1,0,0,1,"Hello World");
Jedoch wird der Text nicht angezeigt.
Führ ich die DisplayText von Hand aus geht es.

Ich habe nur
Zitat:
LuaOpen_Base(Lua_Instance);
Mit dieser Anweisung wird nichts anderes gemacht als den Output des Lua Programms auf das Konsolenfenster zu Lenken und einige andere Dinge mit der Anwendung zu verknüpfen. Will man Lua in einem nicht Konsolen Basierendem Programm verwenden, so sollte man auf diese Zeile verzichten und die Funktion „print“ neu implementieren (Aber dazu nachher mehr…).
Weggelassen, da mir klar war das das print nicht funktioniert (es handelt sich um ein Spiel)
Marc S.
  Mit Zitat antworten Zitat