Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Empfohlene Beiträge

Geschrieben

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 von HaNNoveraNer

Geschrieben

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

Geschrieben
  • Autor

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?

 

Geschrieben
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.

Geschrieben
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

 

Geschrieben
  • Autor

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 von HaNNoveraNer

Geschrieben

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.

Geschrieben
  • Autor

Sorry, ich hab den Fehler gefunden.

es muß == nil heißen, der Fehler kam erst danach!
Danke für Hilfe!

Geschrieben

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"

Geschrieben
  • Autor

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 von HaNNoveraNer

Geschrieben
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.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.