Guten Morgen
Ich habe nun mal begonnen mich mit Makros zu befassen. Nun versuchte ich eine Funktion für die Berechnung des Taupunktes zu schreiben (der Berechnungscode stammt aus dem Handbuch). Nun erhalte ich eine Fehlermeldung das lokale Variable teilweise gleiche Namen besitzen.
Error in Macroexpansion in line: [22] in "C:/Users/Kropfm/Desktop/DewPoint.lib"
"T@" <==> "SDDT@" => Error: two local macro-variables have partially same name
ID:82
EibParser ended with an error
Kann mir jemand bitte hier auf die Sprünge helfen? Während ich verstehe das lokale Variable (lokal) einmalig sein müssen, sehe ich nicht das diese zwei (T@ und SDDT@) es nicht sein sollten. Weiter würde mich noch interessieren ob ich lokale Konstanten definieren kann, z.B. a=7.5f32. Und dürfen lokale Variablenamen von Makros im EibCode wieder verwendet werden? Von welchem Typ sind eigentlich lokale Variablen? Zu viele Fragen, ich weiss;-)
Würde mich auf Euren Input freuen.
Gruss,
Martin
Hier der Code:
[highlight=epc]
:begin DewPoint(Temperature, Humidity)
:var a@
:var b@
:var r@
:var RH@
:var T@
:var SDDT@
:var DDrT@
:var v@
:var TD@
RH@=convert(Humidity,0f16)/2.54f16"]RH@=convert(Humidity,0f16)/2.54f16"]RH@=convert(Humidity,0f16)/2.54f16
a@=7.5f32
b@= 237.3f32
r@=convert(RH,0.0f32"]r@=convert(RH,0.0f32"]r@=convert(RH,0.0f32)
T@=convert(T,0.0f32"]T@=convert(T,0.0f32"]T@=convert(T,0.0f32)
SDDT@=6.1078f32"]SDDT@=6.1078f32"]SDDT@=6.1078f32 * pow(10f32,(a@*T@)/(b@+T"]a@*T@)/(b@+T@))
DDrT@= r/100f32*SDDT@
v@=log(10f32,(DDrT@/6.1078f32"]v@=log(10f32,(DDrT@/6.1078f32))
:return TD@=b@*v@/(a@-v"]TD@=b@*v@/(a@-v@)
:end[/highlight]
Ich habe nun mal begonnen mich mit Makros zu befassen. Nun versuchte ich eine Funktion für die Berechnung des Taupunktes zu schreiben (der Berechnungscode stammt aus dem Handbuch). Nun erhalte ich eine Fehlermeldung das lokale Variable teilweise gleiche Namen besitzen.
Error in Macroexpansion in line: [22] in "C:/Users/Kropfm/Desktop/DewPoint.lib"
"T@" <==> "SDDT@" => Error: two local macro-variables have partially same name
ID:82
EibParser ended with an error
Kann mir jemand bitte hier auf die Sprünge helfen? Während ich verstehe das lokale Variable (lokal) einmalig sein müssen, sehe ich nicht das diese zwei (T@ und SDDT@) es nicht sein sollten. Weiter würde mich noch interessieren ob ich lokale Konstanten definieren kann, z.B. a=7.5f32. Und dürfen lokale Variablenamen von Makros im EibCode wieder verwendet werden? Von welchem Typ sind eigentlich lokale Variablen? Zu viele Fragen, ich weiss;-)
Würde mich auf Euren Input freuen.
Gruss,
Martin
Hier der Code:
[highlight=epc]
:begin DewPoint(Temperature, Humidity)
:var a@
:var b@
:var r@
:var RH@
:var T@
:var SDDT@
:var DDrT@
:var v@
:var TD@
RH@=convert(Humidity,0f16)/2.54f16"]RH@=convert(Humidity,0f16)/2.54f16"]RH@=convert(Humidity,0f16)/2.54f16
a@=7.5f32
b@= 237.3f32
r@=convert(RH,0.0f32"]r@=convert(RH,0.0f32"]r@=convert(RH,0.0f32)
T@=convert(T,0.0f32"]T@=convert(T,0.0f32"]T@=convert(T,0.0f32)
SDDT@=6.1078f32"]SDDT@=6.1078f32"]SDDT@=6.1078f32 * pow(10f32,(a@*T@)/(b@+T"]a@*T@)/(b@+T@))
DDrT@= r/100f32*SDDT@
v@=log(10f32,(DDrT@/6.1078f32"]v@=log(10f32,(DDrT@/6.1078f32))
:return TD@=b@*v@/(a@-v"]TD@=b@*v@/(a@-v@)
:end[/highlight]
Kommentar