numerische Variablen und Slots

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.
  • Hab da mal eine Frage an Lua-Experten:

    Ich benutze im Script eine Variable (a) um einen Zähler hoch und runter zu zählen. Funktioniert einwandfrei. Dann speichere ich die Variable in einem freien Slot, sie wird dort auch als DN_*** , also als numerische Variable abgelegt. Hol ich mir sie wieder in meine Variable (a = EEPLoadData(***)), kann ich sie nicht mehr arithmetisch verarbeiten weil angeblich "a boolean value", also wahr oder falsch. Was mache ich hier falsch?

    Danke für eure Hilfe

    Jorge

    Grüße Jorge

    ___________________________________________________

    EEP 16.1

    AMD 955 Black Edi. @ 3,7GHz, RAM 8GB DDR3

    ATI HD6950 @ HD6970, 2GB

    SSD 120GB, SSD 240GB

  • Hallo Jorge,

    in deinem Beispiel liefert a nur die Information ob der Speicher vorhanden ist oder nicht,

    und dieser Wert kann nur wahr oder falsch sein.

    Richtig wäre es so, natürlich mit deiner Speichernummer

    Code
    hResult, a = EEPLoadData(1)
    if hResult then
        print("Slot 1 enthält: "..a)
    else
        print("Slot 1 ist leer")
    end

    s. auch Lua-Handbuch Seite 71

    Gruß Maik

    Für Interessierte

    EEP17.3 + PL1, PL2, Modellkatalog, ME, ZE, Konverter, HomeNos 15, 16,17

    Rechner: i7-9700K 32GB, RTX2080 8GB, Win10 Pro, Bildschirme: 2 x 4K, Notebook: MSI GS65 8SG-058 Stealth Gaming 15,6" W10Pro

    Mein YouTube-Kanal: https://www.youtube.com/channel/UCsn4pZ1Wmk7jecMZ1uYLTQQ

    Gruß

    Maik

  • Danke an euch, jetzt ist mir´s wieder aufgegangen, hab ich eigentlich gewusst. Wenn man das selten nutzt, hat man es in meinem Alter schnell wieder vergessen.

    Also nochmal danke, Forum ist schon was feines

    :bm_1:

    Grüße Jorge

    ___________________________________________________

    EEP 16.1

    AMD 955 Black Edi. @ 3,7GHz, RAM 8GB DDR3

    ATI HD6950 @ HD6970, 2GB

    SSD 120GB, SSD 240GB

  • Oder man definiert sich am Anfang des Skripts eine eigene Funktion, die man statt EEPLoadData verwendet:

    Code
    function LoadSlot(id) return(select(2,EEPLoadData(id))) end

    (Um Fehler zu vermeiden, sollte man natürlich nur Slots abfragen, in denen etwas gespeichert ist; oder man erweitert die Funktion entsprechend.)

    Gruß, Dennis

    Immer noch EEP 13 Expert + Modellkonverter, jetzt aber auf neuer Infrastruktur:

    Acer Nitro 5 (75AM) mit i7-10750H @2.6 GHz (Boost @5.0 GHz), 16GB RAM, NVidia GeForce RTX3060 (6GB), Win 10 64bit

  • .... oder man packt die Funktion in eine eigene Funktion, die nur den zweiten Wert, oder einen passenden Fehlerwert zurückgibt und verwendet fürderhin nur noch diese.

    Wenn man diese Funktion anständig baut, darf man selbstverständlich auch Slots abfragen, die nicht gesetzt sind, ohne dass da ein Unglück geschieht.

    Jaja. Viele Wege führen zum Ziel.

    Der einfachste Weg ist... Wenn etwas nicht wie erwartet funktioniert ... Griff zur Dokumentation um nachzugucken, wie das mit der selten verwendeten Funktion nun genau funktioniert.

    Die EEP-Lua-Dokumentation ist tatsächlich ok und gut verständlich.

    :aq_1:Gruss Jürg

    Es ist müssig, dauernd den Weltuntergang heraufzubeschwören. Man muss auch aktiv etwas dafür tun. :bn_1:

  • oder man packt die Funktion in eine eigene Funktion, die nur den zweiten Wert, oder einen passenden Fehlerwert zurückgibt

    Genau das tut die von RSXler vorgeschlagene Zeile.