HaNNoveraNer Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 (bearbeitet) Hi Ich muß in Lua den Inhalt einer Liste (variable in einem Signal) Namens "Liste1" mit 2 Texteinträgen "T1" und "T2" in einem Objekt auswerten, aber nur wenn sie existiert, ansonsten nehme ich immer "T3" Wie mache ich das? Ich laufe da immer auf einen error. Danke und Gruß Thomas Bearbeitet 31. Januar 2020 von HaNNoveraNer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Neo Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 Hallo Thomas, in Lua besitzt eine nicht existierende Variable den Wert "nil". Wenn du darauf prüfst, weißt du, ob die Variable existiert. Viele Grüße, Neo Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 31. Januar 2020 Autor Teilen Geschrieben 31. Januar 2020 Ja, das weiß ich, aber ich weiß nicht, wie ich die Abfrage schreibe? :-( mit wert=signal.variables("Liste1") bekomme ich einen Fehler für Zugriff auf nil. Wie PRÜFE ich? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 vor einer Stunde schrieb HaNNoveraNer: aber nur wenn sie existiert Wenn die Liste existiert? Oder wenn Elemente in der Liste existieren? Das ist nämlich nicht dasselbe. Wenn du T1 und T2 löscht, dann existiert Liste1 als leere Liste. Willst du (in dem Glauben, alles sei vorhanden) auf T1 zugreifen, dann bekommst du die Fehlermeldung, dass dieses Feld nicht existiert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 Gerade eben schrieb HaNNoveraNer: Wie PRÜFE ich? Mit if if Liste1 then print("Die Liste existiert, kann aber leer sein") else print("Liste? Ich weiß von keiner Liste! Wer soll das sein?") end Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 31. Januar 2020 Autor Teilen Geschrieben 31. Januar 2020 (bearbeitet) Hier mein richtiger Code, der den Fehler produziert. Ich will wissen, ob die Liste existiert. local route=vehicle.variables["route"] if fsignal.variables["R_Alle"] ~= nil then fsrouten=fsignal.variables[route] else fsrouten=fsignal.variables["R_Alle"] end Bearbeitet 31. Januar 2020 von HaNNoveraNer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 Da hast du einen Dreher drin. Wenn deine Liste ungleich nil ist, also existiert, dann nimmst du die Route. Existiert sie hingegen nicht, dann nimmst du die Liste Schmeiß den Vergleich ganz raus. Der ist eh überflüssig. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 31. Januar 2020 Autor Teilen Geschrieben 31. Januar 2020 Sorry, ich hab den Fehler gefunden. es muß == nil heißen, der Fehler kam erst danach! Danke für Hilfe! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 statt == nil nimm not local route=vehicle.variables["route"] if not fsignal.variables["R_Alle"] then fsrouten=fsignal.variables[route] else fsrouten=fsignal.variables["R_Alle"] end Aber das geht noch viel schicker: fsrouten = fsignal.variables["R_Alle"] or vehicle.variables["route"] fertig. Das nimmt "R_Alle", wenn es existiert und ansonsten "route" Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 31. Januar 2020 Autor Teilen Geschrieben 31. Januar 2020 (bearbeitet) Ich habe es jetzt mit dem NOT gemacht, da ich mich entschlossen habe, beides anzugeben, damit man Züge auch ohne Route fahren lassen kann, die dann alle möglichen bzw. unter R_Alle angegebenen Fahrstrassen nehmen. Mir raucht aber schon der Schädel. Es ist garnicht so einfach eine komplette Fahrstraßensteuerung mit Weichen, Routen, Ausweichfahrstraßen und Zufall u.s.w. unabhängig vom Programmcode nur mit dem Timer, 2 Kontakten und dem Startsignal zu programmieren. Aber ich bin fast fertig... Bearbeitet 31. Januar 2020 von HaNNoveraNer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 31. Januar 2020 Teilen Geschrieben 31. Januar 2020 vor einer Stunde schrieb HaNNoveraNer: Ich habe es jetzt mit dem NOT gemacht Vertrau mir, Thomas. Die einzelne Zeile, welche ich dir als Alternative genannt habe, macht genau dasselbe. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
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