AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi LUA will die Funktion nicht ausführen.
Thema durchsuchen
Ansicht
Themen-Optionen

LUA will die Funktion nicht ausführen.

Ein Thema von Berlinermauer · begonnen am 7. Dez 2009 · letzter Beitrag vom 8. Dez 2009
Antwort Antwort
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, 22: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
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

Re: LUA will die Funktion nicht ausführen.

  Alt 7. Dez 2009, 22:30
Sicher, dass das nicht so geht:
Delphi-Quellcode:
Red := Lua_ToNumber(L, -5);
Green := Lua_ToNumber(L, -4);
Blue := Lua_ToNumber(L, -3);
Thickness := Lua_ToNumber(L, -2);
Text := Lua_ToString(L, -1);
Bei allen Beispielen, die ich gefunden habe, gab es negative Parameter.

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Berlinermauer

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

Re: LUA will die Funktion nicht ausführen.

  Alt 8. Dez 2009, 16:08
Hallo, ich habe es nun gelöst :]

Und zwar,
Das mit dem negativen scheint nicht das Problem zu sein, denn egal ob negativ od. positiv es kommt das gleiche raus.

Ich hatte lediglich vergessen, die Funktion PublishFunctions aufzurufen, welche die Funktion dem Script übergibt.
Marc S.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz