Jump to content

Ein ungeklärtes Lua-Problem


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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()

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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