Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,

gibt es keinen Zugriff auf die Variablen im Depot ?

   if $("Depot").count>0 then
        local tblFahrzeuge = $("Depot").entries
        print(tblFahrzeuge[0].name)                               (1)
        print(tblFahrzeuge[0].variables.einfahrt)            (2)
   end

(1) funktioniert noch

(2) funktioniert nicht

Ich möchte ein Fzg nur aus dem Depot holen, wenn seine vorgesehene Fahrstrasse frei ist

Grüße vom Liftboy

 

 

 

Geschrieben (bearbeitet)

Hallo @liftboy ,

Es gibt keinen Zugriff auf die Variablen von Fahrzeugen im Depot.

Vielleicht hilft Dir meine Beispielanlage "Depot mit Bedienpanel" (ID 26881CED-3751-4420-9C3C-2E228BBA6801 ) weiter. Dort werden in einer Liste die Zugnamen und der Rang gespeichert. Es wäre einfach, für einen Zugeintrag eine weitere Informationen in die Liste aufzunehmen. Siehe besonders die Ereignisse "Zug eintragen" und "Zug austragen".

Schau's Dir an und wenn Du Fragen hast ...

Viele Grüße,
    Wolfgang

 

Bearbeitet von prinz
ID nachgetragen
Geschrieben

Hallo @liftboy,

ergänzend zum Beitrag von @prinz.

vor 33 Minuten schrieb liftboy:

print(tblFahrzeuge[0].variables.einfahrt) 

Diese Anweisung um auf Variablen zuzugreifen, müsste bei Fahrzeugen, die sich nicht in einem Depot befinden,

lauten xxx.variables[“einfahrt“]  (Bei Text oder Zahlenvariablen)

Und wenn die Variable „Einfahrt“ ein Objekt oder eine Fahrstraße ist, dann xxx.variables[“einfahrt“].name

Und die Variable darf keine Listen oder Tabelle sein, sonst must du noch den Listenplatz angeben.

VG,

Hawkeye

Geschrieben

danke @prinz

hallo @Hawkeye

sorry die Lua Syntax läßt schon folgende im Ergebnis immer gleiche Schreibweisen zu:

test = { test1= {test2=10} }
Lok = {name="Köf",variables={name="Köf",test=true}}

print(Lok.name)
print(Lok.variables.name)
print(Lok.variables.test)

print(test.test1.test2)
print(test["test1"].test2)
print(test.test1["test2"])
print(test["test1"]["test2"])

es wird

Köf
Köf
true
10
10
10
10

ausgegeben

Gruß vom Liftboy

 

Geschrieben

Hallo @liftboy

if $("Depot").count>0 then
  local tblFahrzeuge = $("Depot").entries
  print(tblFahrzeuge[0].name)               -- (1)
  print(tblFahrzeuge[0].variables.einfahrt) -- (2) 
end 

(1) geht nicht, weil Dein Zugriff nicht stimmt.
local tblFahrzeuge = $("Depot").entries liefert keine Liste zurück! sondern .entries ist ein Direktzugriff auf den Eintrag.

if $("Depot").count>0 then
  print($("Depot").entries[0].name)  -- (1)
end 

... dann wird der Name auch ausgegeben.

Gruß
EASY

Geschrieben (bearbeitet)

wahrscheinlich ist der Depot-Eintrag serialisiert damit ist das Objekt komprimiert und auch leicht transportierbar, und aus dem Umfeld verschwunden

aber das müßte @Neo beantworten

 

Bearbeitet von liftboy
ergänzt
Geschrieben
vor 2 Stunden schrieb prinz:

Hallo liftboy ,

Es gibt keinen Zugriff auf die Variablen von Fahrzeugen im Depot.

Vielleicht hilft Dir meine Beispielanlage "Depot mit Bedienpanel" (ID 26881CED-3751-4420-9C3C-2E228BBA6801 ) weiter. Dort werden in einer Liste die Zugnamen und der Rang gespeichert. Es wäre einfach, für einen Zugeintrag eine weitere Informationen in die Liste aufzunehmen. Siehe besonders die Ereignisse "Zug eintragen" und "Zug austragen".

Schau's Dir an und wenn Du Fragen hast ...

Viele Grüße,
    Wolfgang

 

Hallo @prinz

Deine Anlage ist total interessant, da finde ich bestimmt Anregungen, danke !

Geschrieben

Hallo liftboy,

aktuell unterstützt ein Depot-Eintrag nicht den Zugriff auf die Variablen. Das hat etwas damit zu tun, dass die Objekte in den Depots keine echten Objektinstanzen mehr sind. Es wäre zwar möglich, einen Zugriff auf die Variablen zu ermöglichen, allerdings wäre das dann auf Lua beschränkt. Das Ereignis "Variable wurde geändert" funktioniert damit nicht, und auch kann eine solche Variable nicht per grafischer EV adressiert werden. Weil das alles nicht richtig konsistent ist, gibt es aktuell diesen Variablenzugriff noch nicht.

Viele Grüße,

Neo

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...