ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
1052
1052
EMPFEHLEN
-
Moin zusammen,
ich habe hier ein Problem mit einem Programm und komme einfach nicht darauf, was falsch ist. Ich habe es schon versucht, in diversen IRC-Channels und einem anderen Forum Hilfe zu finden, leider konnte mir keiner helfen.
Das ganze ist relativ schwer zu beschreiben, aber ich versuche es einfach mal.
In mainwindow.cpp wird
Code :1 2 3
lFunc *temp = new lFunc(label); funcMap.insert(pair<QString, lFunc *>(label, temp)); connect(button, SIGNAL(clicked()), funcMap[label], SLOT(run()));
aufgerufen.
Zeile 1: lFunc ist eine Klasse:
Code :1 2 3 4 5 6 7 8 9 10 11 12
class lFunc: public QObject { Q_OBJECT public: lFunc(QString, QObject* parent = 0); lFunc(QObject *parent = 0): QObject(parent) {} public slots: void run(); private: QString funcName; };
Z. 2: funcMap ist ein Map mit QString und lFunc * .
Z. 3: Hier wird der jeweilige Knopf mit dem Slot run() verbunden
Code :1 2 3 4 5 6 7 8 9 10 11
void lFunc::run() { lua_pushstring(MainWindow::script.get(), funcName.toAscii()); lua_gettable(MainWindow::script.get(), LUA_GLOBALSINDEX); lua_pushnil(MainWindow::script.get()); //funktioniert auch ohne nicht if(lua_pcall(MainWindow::script.get(), 1, 0, 0)!=0) { QString info = lua_tostring(MainWindow::script.get(), -1); std::cout<<"error running function "<<funcName.toStdString()<<": "<<info.toStdString()<<std::endl; } }
Hier ein Beispiel Skript:
getsin(x) ist eine in C geschriebene Funktion und funktioniert.Code :1 2 3 4 5 6 7 8 9 10 11
require "mylib" function getsin(x) mylib.PushButton("new", 23, 23) mylib.PushButton("next", 1, 1) mylib.LineEdit("test: ", 2, 2) return mylib.example(x) end function new_clicked() mylib.PushButton("made from new", 23, 24) end
Wenn ich
einfach im Skript aufrufe, so funktioniert auch das.Code :1
new_clicked()
Das Problem ist nur, dass wenn es über run() aufgerufen werden sollte der Fehler
entsteht.error running function new_clicked: attempt to call a nil value
Versuchsweise luaL_dostring(L, "new_clicked()") funktionierte auch nicht.
MainWindow::script.get() gibt lua_State* zurück, das funktioniert auch, da ich lua_State *F = MainWindow::script.get(); ausgeführt habe und es - soweit ich das im Debugger sehe - einen richtigen Wert bekommt.
script ist ein statischer Member von MainWindow:
Es hat eine Methode get(), das wie oben beschrieben lua_State* zurückgibt.Code :1
static Script script;
Kann mir jemand weiterhelfen?
Gruß,
badday
EDIT: Problem gelöst. Ich hatte intelligenter weise nicht das statische Script - Objekt benutzt. Ob es nur daran lag, kann ich aber nicht sicher sagen.Geändert von badday (15.03.10 um 18:43 Uhr)
Ähnliche Themen
-
Funktion innerhalb einer Funktion aufrufen
Von Atalión im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 31.01.10, 17:32 -
DB-Funktion aufrufen
Von chuqa im Forum VisualStudio & MFCAntworten: 0Letzter Beitrag: 04.07.07, 15:18 -
PHP Funktion in JavaScript Funktion aufrufen, aber wie ?
Von blumshuett im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 24.03.05, 11:32 -
Funktion nach Aufrufen einer Funktion
Von ShinmA im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 15.08.03, 10:41 -
Mit Funktion andere Funktion aufrufen
Von sheaven im Forum PHPAntworten: 1Letzter Beitrag: 07.04.03, 21:50





Zitieren
Login






