siggi Posted December 4, 2020 Share Posted December 4, 2020 Hallo, stehe mal wieder auf dem Schlauch, obwohl icj mich seit ca. 2 Wochen mit Lua beschäftige, bekomme ich ein Problem nicht gelöst. Wie spreche ich ein Tabelle über eine Variable an? Hier mein Skript: 1 -- Deklaration 2 local tblFahrzTypen = $("Ereignisse").variables["FahrzeugTypen"] 3 local BahnListe = {} 4 local StrassenListe = {} 5 local LuftListe = {} 6 local WasserListe = {} 7 8 -- Tabelle auslesen 9 for index, Art in pairs(tblFahrzTypen) do 10 print(index) 11 local tblTemp = tblFahrzTypen [index] 12 for Typ, TypText in pairs(tblTemp) do 13 ListenName = (index.."Liste") 14 print(ListenName) 15 table.insert(ListenName, Typ.." - "..TypText) 16 end 17 end Es geht um die Zeilen 13 und 15, in Zeile 13 wird der Tabellenname erzeugt (ListenName =..), in Zeile 15 soll die Tabelle gefüllt werden. In Zeile 15 erfolgt dann die Fehlermeldung "Table expected, got string". Wie mach ich aus einen String einen Tabellennamen? Gruß und schönen Abend Siggi Link to comment Share on other sites More sharing options...
Goetz Posted December 4, 2020 Share Posted December 4, 2020 (edited) In Zeile 13 bildest du einen String. Ein String ist keine Variable und du kannst ihn auch nicht einfach anstelle eines Variablennamens einsetzen. Aber ein String kann ein Tabellenindex sein. Index sagt man wohl eigentlich nur bei Zahlen. Also schreibe ich lieber: Der Bezeichner eines Tabellenplatzes kann ein String sein. Wären deine Listen alle Untertabellen einer übergeordneten Tabelle, dann wären ihre Namen Bezeichner: -- Deklaration local tblFahrzTypen = $("Ereignisse").variables["FahrzeugTypen"] local ListenSammlung = { BahnListe = {}, StrassenListe = {}, LuftListe = {}, WasserListe = {} } -- Tabelle auslesen for index, Art in pairs(tblFahrzTypen) do print(index) for Typ, TypText in pairs(Art) do ListenName = (index.."Liste") print(ListenName) table.insert(ListenSammlung[ListenName], Typ.." - "..TypText) end end Lua verwaltet sämtliche Variablen, Tabellen, Funktionen etc. in einer einzigen Tabelle namens _ENV Damit kannst du das, was ich mittels übergeordneter Tabelle erledigt habe, auch direkt mithilfe von _ENV machen. Aber das obige Beispiel ist für das Verständnis die bessere Wahl. in deinem tblFahrzTypen [index] in Zeile 11 steht übrigens genau das was du zuvor in Zeile 8 an die Variable Art übergibst. Die Hilfsvariable tblTmp ist also überflüssig. Nimm stattdessen einfach Art (siehe Zeile 8 in meinem Beispiel) Gruß Götz P.S.: Zeilennummern haben in einem Lua Skript nichts verloren. Bitte nicht mit kopieren. Edited December 4, 2020 by Goetz Schreibfehler korrigiert Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now