Jump to content

Tabellen-/ Listenname aus Variable


siggi

Recommended Posts

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

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 by Goetz
Schreibfehler korrigiert
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...