siggi Geschrieben 4. Dezember 2020 Geschrieben 4. Dezember 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
Goetz Geschrieben 4. Dezember 2020 Geschrieben 4. Dezember 2020 (bearbeitet) 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. Bearbeitet 4. Dezember 2020 von Goetz Schreibfehler korrigiert
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden