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