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

Hallo @Goetz,

ich habe ein Lua-Problem, bei dem ich deine Hilfe zur Lösung benötige. Nachstehend das Skript, dass bei der Erstellung keine Fehler meldet, aber zur Laufzeit abbricht.
Ich habe auch selbst versucht die richtige Syntax, bzw. die richtige Anweisung herauszubekommen, aber leider erfolglos.
Offensichtlich definiert Lua "char" als Variable und damit beginnt offensichtlich das Problem.
------------------------------------------------------------------------------------------------------------------------------------------------

-- Für die richtige Reihenfolge der Zug-Entladung ist es notwendig
-- zu wissen, an welcher Position im Zug welche Wagen-Nr steht.

if $("Taste ▀").state == 1 then

  $("Ereignisse").variables["LfdNr"] = 0

  local t = layout:getVehicleGroup($("Zug Holz A"), 3)
  -- Es werden nur die Wagen des Zuges ohne Antrieb ermittelt.

  for i, Fahrzeug in ipairs(t) do
    $("Ereignisse").variables["LfdNr"] = $("Ereignisse").variables["LfdNr"] + 1

    -- Die LfdNr stellt die Reihenfolge der Fahrzeuge im Zug dar.
    -- Die LfdNr 1 ist der 1.Wagen direkt nach der Lok, in der Mitte ist der 2.Wagen
    -- nach der Lok und am Ende ist der 3.Wagen.
    -- Jeder Wagen mit seiner jeweiligen WagenNr (erweiterte Objekt-Variable).
    -- Somit ist bekannt, welche WagenNr an welcher Zug-Position ist.

    $("Ereignisse").variables["Aktueller Zug-Wagen"] = Fahrzeug

    if $("Ereignisse").variables["LfdNr"] == 1 then
      $("Ereignisse").variables["Zug-Wagen 1 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"]
    else
      if $("Ereignisse").variables["LfdNr"] == 2 then
        $("Ereignisse").variables["Zug-Wagen 2 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"]
      else
        if $("Ereignisse").variables["LfdNr"] == 3 then
          $("Ereignisse").variables["Zug-Wagen 3 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"]
        end
      end
    end
  end
 

  $("Ereignisse").variables["WagenReihenfolge"] = char ($("Ereignisse").variables["Zug-Wagen 1 Nr"],         -- IN DIESER ZEILE ERFOLGT DER ABBRUCH
                                                                                               $("Ereignisse").variables["Zug-Wagen 2 Nr"], 
                                                                                               $("Ereignisse").variables["Zug-Wagen 3 Nr"])

  $("Taste ▀").state = 0
end
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-- Ich habe gehofft, dass mit der Anweisung eine Charakter-Verknüpfung der drei Variablen in einer erfolgt.

-- In dieser Variablen $("Ereignisse").variables["WagenReihenfolge"] sollen die Werte "123" oder "oder "213" oder anderen Reihenfolgekombinationen
-- der Wagen-Nummern stehen. Im unteren Protokollbeispiel wäre es "312"
--Nachstehend der Protokolltext.
--[14:48:17]     Schalter wird betätigt (2)
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 0
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 1
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 3
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 1 Nr", "3"
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 2
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 1
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 2 Nr", "1"
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 3
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 2
--[14:48:17]         Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 3 Nr", "2"
--[14:48:17]         Skriptfehler (35): attempt to call a nil value (global 'char')
--[14:49:25] Ereignisprotokollierung gestoppt
--[14:55:20] Ereignisprotokollierung gestartet

Bitte hilf mir. Danke im Voraus.

Freundliche Grüße
Walter

Geschrieben
vor einer Stunde schrieb WalterW:

ich habe ein Lua-Problem,

Hallo @WalterW, bin zwar nicht Götz. :D 

Aber ich denke ich kann dir auch einen Lösungsvorschlag machen. ;)

Habe dein Skript etwas vereinfacht. 

Aber statt  char   verwende    tostring (Wert1 .. Wert2 .. Wert3 )  (die zwei Punkte zwischen den Werten sind wichtig!)  

 

Screenshot2023-07-19162103.thumb.jpg.283b3ed065947c896ed5dfcb5af4c912.jpg

dann klappt es auch mit "321" als Ergebnis. 

Screenshot2023-07-19162125.thumb.jpg.6df5b9be7d646254a322ea59516c236b.jpg

VG, 

Hawkeye

 

Bearbeitet von Hawkeye

Geschrieben
vor einer Stunde schrieb WalterW:

Offensichtlich definiert Lua "char" als Variable

Mit den runden Klammern dahinter sieht Lua dein char als Funktionsnamen an.
Ohne Klammern würde es als Name einer Variable betrachtet.

Denn eine Methode char(), die die von dir gewünschte Wandlung vornimmt, gibt es in Lua nicht.
Hawkeye hat dir eine gute Alternative genannt.

eine weitere Möglichkeit wäre string.format()

 

Geschrieben
  • Autor

Hallo Hawkeye und Götz,

vielen Dank für die Antworten und Hilfe.

Freundliche Grüße
Walter

Geschrieben
  • Autor

Hallo @Hawkeye und @Goetz,

was nicht ganz unwichtig ist, bei der Ermittlung der Wagenreihenfolge: Die Reihenfolge ist abhängig von der Fahrtrichtung !
Fährt die Lok vorwärts, dann beginnt die Zählung direkt hinter Lok bis zum Zugende. Im umgekehrten Fall, dass die Lok rückwärts fährt, beginnt die Zählung am Ende des Zuges bis zur Lok. Bin aber erst jetzt, nachdem ich eine Lösung für die Feststellung der Reihenfolge dank eurer Hilfe habe, darauf gekommen.

Freundliche Grüße
Walter

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.