numerische Variablen und Slots

Are you sure that you placed your question/contribution in the apropriate thread and that you have selected an expressive headline?
  • 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

  • Der erste Rückgabewert von EEPLoadData gibt nur an, ob es den Slot überhaupt gibt (ein Boolean). Erst der zweite Rückgabewert enthält den eigentlich gespeicherten Wert.

    Nach erfolg, a = EEPLoadData(...) solltest du also mit a rechnen könnnen.


    Viele Grüße

    Benny

  • 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
    1. hResult, a = EEPLoadData(1)
    2. if hResult then
    3.     print("Slot 1 enthält: "..a)
    4. else
    5.     print("Slot 1 ist leer")
    6. end

    s. auch Lua-Handbuch Seite 71

    Gruß Maik

    EEP 13 + Plugin 1, EEP 12.1 Expert (x64), EEP 6.1 Classic, EEP 10 Expert, Modellkatalog, Konverter, HomeNos 13.0
    Rechner-Eigenbau: Z170 Pro Gaming, i5-6600k 4x4,2 Ghz OC, 16GB Ram, GTX1080 8GB, 960GB SSD, Win 10 Pro
    Bildschirm: Asus ROG PG27A 4K, Samsung TB24300 Full-HD
    Notebook: ASUS GL752V, I7-6700HQ 4 x 2,6 - 3,5 GHz, 8GB Ram, NVIDIA Geforce GTX 960M 4GB, Win10 Pro


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

  • 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:

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

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


    EEP 13 Expert auf meiner Uralt-Kiste: Läuft und läuft und läuft und läuft... + Modellkonverter
    Toshiba Satellite P750-12T mit i7 2630QM @ 2 GHz (Boost @ 2,9 GHz); 8 GB RAM; NVidia GeForce GT 540 M; 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

    Samsung Series 9 Laptop / Lenovo Z50 - 70 Laptop
    Intel i5 1.7 Ghz / Intel i7 2.0 Ghz
    4 Gb Speicher / 8 Gb Speicher
    Intel HD Graphics 4000 / Intel HD Graphic und NVIDIA Geforce 840M
    Sandisk SSD U100 SMG2 / ST1000M014-SSHD-8GB
    Windows 10 64 /Windows 10 64
    EEP13 / EEP12, EEP13
    AnlagenBau / AnlagenLaufLass

  • Genau das tut die von RSXler vorgeschlagene Zeile.

    Richtig.

    Samsung Series 9 Laptop / Lenovo Z50 - 70 Laptop
    Intel i5 1.7 Ghz / Intel i7 2.0 Ghz
    4 Gb Speicher / 8 Gb Speicher
    Intel HD Graphics 4000 / Intel HD Graphic und NVIDIA Geforce 840M
    Sandisk SSD U100 SMG2 / ST1000M014-SSHD-8GB
    Windows 10 64 /Windows 10 64
    EEP13 / EEP12, EEP13
    AnlagenBau / AnlagenLaufLass