Ankündigung

Einklappen
Keine Ankündigung bisher.

Makros und kein Ende: Parameter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [EibParser] Makros und kein Ende: Parameter

    Ich gehe wohl zurecht davon aus, dass die in einem Makro definierten Parameter beim Expander zunächst zu einer reinen Textersetzung führen sollen.

    Einfaches Beispiel, ein Makro, das bei change einer Trigger GA auf eine andere GA einen Wert schreiben soll:

    [highlight=epc]
    //Definiton des Makros:
    :begin makroTuWas(pGAtrigger, pGAout, pWert)

    if change(pGAtrigger) then {
    write(pGAout, pWert);
    endif;

    :end
    [/highlight]

    Nutze ich dieses Makro also z.B. folgendermaßen:

    [highlight=epc]
    //Anwenden des Makros:
    makroTuWas("StatBadVentilator-4/1/23","BadVentilatorStufe2-4/1/32",AUS);
    [/highlight]

    müsste Folgendes nach dem Expander rauskommen:

    [highlight=epc]
    //Code
    if change("StatBadVentilator-4/1/23") then {
    write("BadVentilatorStufe2-4/1/32",AUS);
    endif;
    // -------------- End of expansion ------------
    [/highlight]

    Nix besonderes? Richtig - Aber jetzt kommts: Wir übergeben einen Term:

    [highlight=epc]
    //Anwenden des Makros mit Term:
    makroTuWas("StatBadVentilator-4/1/23","BadVentilatorStufe2-4/1/32",!"StatBadVentilatorStufe2-4/1/33" and "StatBadVentilator-4/1/23");
    [/highlight]

    Der Expander versucht nun laut Fehlermeldung Im EibStudio den Term so in die Write-Anweisung zu schreiben:

    [highlight=epc]
    write("BadVentilatorStufe2-4/1/32", and!"StatBadVentilatorStufe2-4/1/33""StatBadVentilator-4/1/23");
    [/highlight]

    Hier findet also keine 1:1 Textersetzung beim Einsetzen der Parameter (hier "pWert) statt, sondern der Code wird verhaut! Und das ist ein Fehler im Eibstudio, denn

    [highlight=epc]
    write("BadVentilatorStufe2-4/1/32",!"StatBadVentilatorStufe2-4/1/33" and "StatBadVentilator-4/1/23");
    [/highlight]
    funktioniert natürlich, wenn das denn richtig umgesetzt würde...

    Und zu guter Letzt noch die Fehlermeldung:
    Syntaxfehler in Zeile:[741]
    >Doubleclick(BadVentilator,"BadVentilatorMehrfachk lick-3/4/0",750u64,"BadVentilatorNachlauf-3/4/1","StatBadVentilator-4/1/23","BadVentilatorStufe2-4/1/32",!"StatBadVentilatorStufe2-4/1/33" and "StatBadVentilator-4/1/23")< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
    Makro genieriert ungültigen Code >if (delay(event("BadVentilatorMehrfachklick-3/4/0") and "BadVentilatorMehrfachklick-3/4/0" == AUS, 750u64)) then { if (__Doubleclick_278__Clickcount == 1) then { write("BadVentilatorNachlauf-3/4/1", "StatBadVentilator-4/1/23"); } else { if (__Doubleclick_278__Clickcount == 2) then { write("BadVentilatorStufe2-4/1/32", and!"StatBadVentilatorStufe2-4/1/33""StatBadVentilator-4/1/23"); } endif; } endif; __Doubleclick_278__Clickcount = 0u08;} endif< in >Mak:doubleclick==><
    ID:6
    EibParser wurde mit Fehler beendet.

    #2
    Zitat von klaus_kraemer Beitrag anzeigen
    Ich gehe wohl zurecht davon aus, dass die in einem Makro definierten Parameter beim Expander zunächst zu einer reinen Textersetzung führen sollen.
    Das ist in der aktuellen Beta schon gefixt (vgl. https://knx-user-forum.de/eibpc/3620...ei-makros.html)
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Danke, dann werd' ich morgen wohl ein Beta-Tester...

      Kommentar


        #4
        Derselbe Fehler mit EibStudio 3.011 Beta...



        Ich hab' jetzt die 3.011 Beta, zu der Du mir den Link geschickt hast geöffnet und die selbe Fehlermeldung bekommen:

        +---+ EibParser - v3.015 (Windows Win32 Version) +---+

        Keine Haftung für Schäden, die durch die Benutzung des Programms entstehen.
        Gruppenadressen-Import:
        Datei: "D:/EIB_KNX/EibPC/EibstudioData/tmpAddr.txt" wurde geschrieben
        Datei: "D:/EIB_KNX/EibPC/EibstudioData/tmpMacroOut.txt" wurde geschrieben

        Syntaxfehler in Zeile:[741]
        >Doubleclick(BadVentilator,"BadVentilatorMehrfachk lick-3/4/0",750u64,"BadVentilatorNachlauf-3/4/1","StatBadVentilator-4/1/23","BadVentilatorStufe2-4/1/32",!"StatBadVentilatorStufe2-4/1/33" and "StatBadVentilator-4/1/23")< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
        Makro genieriert ungültigen Code >if (delay(event("BadVentilatorMehrfachklick-3/4/0") and "BadVentilatorMehrfachklick-3/4/0" == AUS, 750u64)) then { if (__Doubleclick_278__Clickcount == 1) then { write("BadVentilatorNachlauf-3/4/1", "StatBadVentilator-4/1/23"); } else { if (__Doubleclick_278__Clickcount == 2) then { write("BadVentilatorStufe2-4/1/32", and!"StatBadVentilatorStufe2-4/1/33""StatBadVentilator-4/1/23"); } endif; } endif; __Doubleclick_278__Clickcount = 0u08;} endif< in >Mak:doubleclick==><
        ID:6
        EibParser wurde mit Fehler beendet.


        Also wieder der gleiche Fehler.... - Ach ja die Fehlermeldung müsste wohl auch geändert werden auf: "PARSER" generiert ungültigen Code....

        Kommentar


          #5
          Zitat von klaus_kraemer Beitrag anzeigen
          Also wieder der gleiche Fehler.... - Ach ja die Fehlermeldung müsste wohl auch geändert werden auf: "PARSER" generiert ungültigen Code....
          na das werden wir nächste Woche fixen.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Zitat von enertegus Beitrag anzeigen
            na das werden wir nächste Woche fixen.
            Hmm...

            Auch wenn in der genannten Woche das 3.011 Release kam - der Fehler scheint immer noch nicht gefixt:

            Syntaxfehler in Zeile:[744]
            >Doubleclick(BadVentilator,"BadVentilatorMehrfachk lick-3/4/0",750u64,"BadVentilatorNachlauf-3/4/1","StatBadVentilator-4/1/23","BadVentilatorStufe2-4/1/32",!"StatBadVentilatorStufe2-4/1/33" and "StatBadVentilator-4/1/23")< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
            Makro genieriert ungültigen Code >if (delay(event("BadVentilatorMehrfachklick-3/4/0") and "BadVentilatorMehrfachklick-3/4/0" == AUS, 750u64)) then { if (__Doubleclick_278__Clickcount == 1) then { write("BadVentilatorNachlauf-3/4/1", "StatBadVentilator-4/1/23"); } else { if (__Doubleclick_278__Clickcount == 2) then { write("BadVentilatorStufe2-4/1/32", and!"StatBadVentilatorStufe2-4/1/33""StatBadVentilator-4/1/23"); } endif; } endif; __Doubleclick_278__Clickcount = 0u08;} endif< in >Mak:doubleclick==><
            ID:6
            EibParser wurde mit Fehler beendet.

            Kommentar


              #7
              Zitat von klaus_kraemer Beitrag anzeigen
              Hmm...
              Auch wenn in der genannten Woche das 3.011 Release kam - der Fehler scheint immer noch nicht gefixt:
              ich habe den Parser an dieser Stelle komplett überarbeitet. Das verschachtelte einsetzen war sicher so nicht bedacht/konzeptioniert gewesen, sollte aber nunmehr besser klappen. Danke schon mal für die Geduld.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar

              Lädt...
              X