Brauche Hilfe beim LUA lernen!!!

Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • Guten Abend,

    bin gerade am LUA lernen! Mit einfachen Sachen habe ich kaum Probleme; OK, manchmal stehe ich auch auf dem Schlauch. Bin halt auch kein Programmierer, Ich versuche auch immer. wenn möglich ohne Hilfe aus zukommen aber jetzt benötige ich etwas Hilfe!

    Was ist an diesem Code falsch bzw. was fehlt?

    Wie bekomme ich die Namen der Wagen dynamisch in die Tabelle geschrieben?



    Liebe Grüsse



    Fussel

    Meine Daten:

    EEP17.1, PlugIn1,, HomeNos17, EEP_Modellkatalog, Tauschmanager Version - immer die neuste. EEP Modell-Explorer, :aq_1:

    MSI GL75 10SDR-222 43,9 cm (17,3 Zoll/144Hz) Gaming-Laptop (Intel Core i7-10750H, 16GB RAM, 512GB PCIe SSD + 1TB HDD, Nvidia GeForce GTX 1660 Ti 6GB, Windows 11)

  • Hallo Fussel,

    @Goetz hat mal eine Funktion veröffentlicht, mit der man ALLE Zugdaten in einer Tabelle speichern kann. Ich weiß nicht mehr in welchem Thread. Daher anstatt des Links hierauf, die Lua-Funktion selbst:

    Studiere sie und du hast deine Lösung!:ad_1::ap_1:

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Du beschreibst zwar nicht, was genau der Fehler ist (Fehlermeldung? Ergebnis anders als erwartet?), aber ich vermute mal, dass der Fehler in Zeile 14 liegt:

    Lua
    table.insert(Name.w1 [2])

    Ich vermute, dass du den Inhalt der Variablen w1 in die Tabelle Name einfügen willst. Das ginge so:

    Lua
    table.insert(Name, w1)

    Was du mit der [2] bezwecken wolltest, weiß ich leider nicht. Du kannst dir aber selbst anschauen, wie und mit welchen Parametern die Funktion table.insert genau funktioniert. Das steht nämlich (auf Englisch) im Lua Reference Manual.

    Viele Grüße

    Benny

  • ALLE Zugdaten in einer Tabelle

    sind für den Anfang vielleicht etwas zuviel. :ae_1:

    Hiermit bekommst du nur die Namen aller Elemente eines Zugverbands in eine Tabelle:

    1. Wird in Zeile 14 ausgedruckt
    2. -
    3. definiert die Funktion Zug() mit dem Argument Zugname. Gibt man den Funktionsnamen (ohne Klammern!) in einen Kontaktpunkt ein, dann ruft ein Zug, der den KP überfährt, diese Funktion auf und übergibt seinen Namen an das Funktionsargument.
    4. übergibt die Anzahl der Elemente im Zugverband Zugname an die Variable anzahl. Die Variable ist als lokale Variable deklariert und steht nur innerhalb der Funktion zur Verfügung
    5. erstellt lokal (= nur innerhalb der Funktion) eine leere Tabelle namens liste.
    6. beginnt eine Wiederholung und gibt den Zähler der Wiederholung an die Variable i. Der Zähler beginnt mit 0 und endet mit der Zahl, die in Zeile 4 gespeichert wurde. Das erste Elemente in einem Zugverband (meistens die Lok) hat die Nummer 0, deshalb muss die Wiederholung mit 0 beginnen wenn man alle Elemente haben möchte.
    7. bittet EEP um den Namen von Element Nummer i Im Zugverband Zugname und übergibt diesen Namen an eine lokale Variable namens name. Bei jedem Durchlauf der Schleife hat i eine andere Zahl. Deshalb bekommt man so nach und nach alle Elemente.
    8. fügt den in name zwischengespeicherten Namen ans Ende der Tabelle liste an. Das erste Argument der Function table.insert() ist der Name der Tabelle, das zweite ist die Information, die gespeichert werden soll. Weil die Information ans Ende angehängt werden soll, muss man keinen Tabellenplatz angeben.
    9. markiert das Ende des for ... do Blocks, der wiederholt ausgeführt wird.
    10. fasst alle durchnummerierten Elemente der Tabelle liste zu einem einzigen String zusammen. Das zweite Argument ist das Trennzeichen zwischen den Elementen. \n steht erzeugt einen Zeilenumbruch. Der String "\n" als Trennzeichen bewirkt also, dass bei der Ausgabe alle Elemente untereinander geschrieben werden. Der fertige String wird an die lokale Variable text übergeben. Diese Aktion wird nur einmal durchgeführt, denn sie steht hinter dem Wiederholungsblock.
    11. gibt den zuvor zusammengestellten Text aus. Es ist ratsam, größere Textmengen zuerst in einem einzigen String zusammenzufassen und dann diesen String komplett mit einem einzigen print() Befehl auszugeben. Das ist erheblich schneller als die Ausgabe lauter einzelner Textzeilen. Ein String kann in Lua sehr, sehr lang sein. Was auch immer man in einem Rutsch ausgeben möchte passt ganz bequem in einen einzelnen String. Die Zusammenstellung des Strings aus vielen Teilen kann Lua wesentlich schneller erledigen als die individuelle Ausgabe aller einzelnen Teile.
    12. markiert das Ende der Funktionsdefinition Zug()
    13. -
    14. löscht das Ausgabefenster und gibt den Titel aus Zeile 1 aus, gefolgt von einem Zeilenumbruch (für eine Leerzeile über der Zugliste)
    15. -
    16. definiert die Hauptfunktion, die EEP selbständig 5 mal je Sekunde aufruft
    17. gibt eine 1 an EEP zurück. Wenn EEP keine Zahl zurück bekommt, dann beendet es den Datenaustausch mit Lua. Bekommt EEP eine 0 zurück, dann läuft Lua mit eingeschränktem Funktionsumfang und ohne erneuten Aufruf der EEPMain() Funktion weiter. Jede andere (positive oder negative) Zahl führt (ohne Unterschied) zum erneuten Aufruf der EEPMain() Funktion.
    18. markiert das Ende der Funktionsdefinition EEPMain()

    5 Mal editiert, zuletzt von Goetz (11. November 2019 um 04:32) aus folgendem Grund: Bild eingefügt

  • Hallo,

    zunächst mal vielen Dank an alle!

    Ein ganz besonderer Dank geht an @Goetz !! Es ist erstaunlich wie viel Mühe du dir gibst, uns allen unseren Fragen so zu beantworten, dass wir mit EEP und LUA immer ein Stückchen weiter kommen (Danke für deine ausführliche Beschreibung).

    Auch die Videos von dir, sind bei mir immer erste Wahl. Habe daraus schon sehr viel gelernt! Leider vergesse ich manches auch wieder,:as_1: Zum Glück kann man sie immer wieder anschauen.

    Also nochmals vielen vielen Dank!

    Fussel

    Meine Daten:

    EEP17.1, PlugIn1,, HomeNos17, EEP_Modellkatalog, Tauschmanager Version - immer die neuste. EEP Modell-Explorer, :aq_1:

    MSI GL75 10SDR-222 43,9 cm (17,3 Zoll/144Hz) Gaming-Laptop (Intel Core i7-10750H, 16GB RAM, 512GB PCIe SSD + 1TB HDD, Nvidia GeForce GTX 1660 Ti 6GB, Windows 11)

  • Auch ich bedanke mich für die tolle Beschreibung zur Erstellung einer Tabelle. Ich habe dieses Script für eine andere Aufgabe etwas verändert und der Versuch hat geklappt.

    Das Beispiel kommt in meine Scriptsammlung.

    Gruß

    Peter

    Betriebsystemname: Microsoft Windows 11 Pro

    Prozessor:Prozessor AMD Ryzen 7 7700X 8-Core Processor, 4501 MHz, 8 Kern(e), 16 logische(r) Prozessor(en)

    PC:RAM 32 GB, Name NVIDIA GeForce RTX 4070 Ti

    EEP 17 mit allen Plug ins und Patches

    Modelkonverter, Home-Nostruktor 16.0, Modellkatalog, Bodentextur Tool

  • Der Zähler beginnt mit 0 und endet mit der Zahl, die in Zeile 4 gespeichert wurde. Das erste Elemente in einem Zugverband (meistens die Lok) hat die Nummer 0,

    Hallo @Goetz ,

    in Zeile 6 deines Scripts hat sich m.E. ein kleiner Fehler eingeschlichen. Hat ein Zugverband z.B. 8 Elemente anzahl = 8 und das 1. Element die Nummer i = 0, dann hat das letzte Element die Nummer i = 7 bzw. i = anzahl - 1. Zeile 6 muss also richtig heißen:

    Lua
    for i = 0, anzahl - 1 do

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...