Hallo Bernd,
das neue Makro von Dir funktioniert mit folgender if-Abfrage:
[highlight=epc]
if change(Buffer_WP) and Buffer_WP!=$$ then \\
UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime \\
endif
[/highlight]
Wenn ich das Makro aber so innerhalb einer if-Abfrage mehrmals aufrufe:
[highlight=epc]
if change(Buffer_WP) and Buffer_WP!=$$ then \\
UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime; \\
UnixTime=convert(split(Buffer_WP,396u16,399u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt1=WPDate+$ $+WPTime \\
endif
[/highlight]
... ist die Fehlermeldung an Länge nicht zu überbieten:
Syntaxfehler in Zeile:[271]
>if change(Buffer_WP) and Buffer_WP!=$$ then UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); UnixTimeToVar(ut,UnixTime); WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime; UnixTime=convert(split(Buffer_WP,396u16,399u16),0u 32); UnixTimeToVar(ut,UnixTime); WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; WP_Fehler_Zeitpunkt1=WPDate+$ $+WPTime endif< in der Datei "./tmpApp.txt"
Deklaration der Variable muss eindeutig sein in >utMonth=0s32< in >Mak:unixtimetovar==>< in >UnixTime=convert(split(Buffer_WP,392u16,395u16),0 u32)--Set;Mak:unixtimetovar==>__UnixTimeToVar_1__unixtim e=convert(UnixTime,0s32)--Set;utMonth=0s32--Set;utDay=0s32--Set;utSecond=mod(__UnixTimeToVar_1__unixtime,60s32 )--Set;utMinute=mod(__UnixTimeToVar_1__unixtime-utSecond,3600s32)/60s32--Set;utHour=mod(__UnixTimeToVar_1__unixtime-utMinute*60s32-utSecond,86400s32)/3600s32--Set;__UnixTimeToVar_0__remainder=__UnixTimeToVar_1 __unixtime-utHour*3600s32+utMinute*60s32+utSecond--Set;;utYear=__UnixTimeToVar_0__remainder/365s32*24s32*60s32*60s32+1970s32--Set;utDaysFromLeapYears=utYear-1s32-1968s32/4s32-utYear-1s32-1900s32/100s32+utYear-1s32-1600s32/400s32--Set;utLeapYear=mod(utYear,4s32)==0s32ANDmod(utYear ,100s32)!=0s32 or mod(utYear,400s32)==0s32--Set;utDaysInYear=__UnixTimeToVar_0__remainder-utYear-1970s32*365s32*24s32*60s32*60s32/86400s32-utDaysFromLeapYears+1s32--Set;if_then !utLeapYear then if_then utDaysInYear>0s32andutDaysInYear<=31s32 then utMonth=1s32--Set;utDay=utDaysInYear--Set endif ;if_then utDaysInYear>31s32andutDaysInYear<=59s32 then utMonth=2s32--Set;utDay=utDaysInYear-31s32--Set endif ;if_then utDaysInYear>59s32andutDaysInYear<=90s32 then utMonth=3s32--Set;utDay=utDaysInYear-59s32--Set endif ;if_then utDaysInYear>90s32andutDaysInYear<=120s32 then utMonth=4s32--Set;utDay=utDaysInYear-90s32--Set endif ;if_then utDaysInYear>120s32andutDaysInYear<=151s32 then utMonth=5s32--Set;utDay=utDaysInYear-120s32--Set endif ;if_then utDaysInYear>151s32andutDaysInYear<=181s32 then utMonth=6s32--Set;utDay=utDaysInYear-151s32--Set endif ;if_then utDaysInYear>181s32andutDaysInYear<=212s32 then utMonth=7s32--Set;utDay=utDaysInYear-181s32--Set endif ;if_then utDaysInYear>212s32andutDaysInYear<=243s32 then utMonth=8s32--Set;utDay=utDaysInYear-212s32--Set endif ;if_then utDaysInYear>243s32andutDaysInYear<=273s32 then utMonth=9s32--Set;utDay=utDaysInYear-243s32--Set endif ;if_then utDaysInYear>273s32andutDaysInYear<=304s32 then utMonth=10s32--Set;utDay=utDaysInYear-273s32--Set endif ;if_then utDaysInYear>304s32andutDaysInYear<=334s32 then utMonth=11s32--Set;utDay=utDaysInYear-304s32--Set endif ;if_then utDaysInYear>334s32andutDaysInYear<=365s32 then utMonth=12s32--Set;utDay=utDaysInYear-334s32--Set endif } endif ;if_then utLeapYear then if_then utDaysInYear>0s32andutDaysInYear<=31s32 then utMonth=1s32--Set;utDay=utDaysInYear--Set endif ;if_then utDaysInYear>31s32andutDaysInYear<=60s32 then utMonth=2s32--Set;utDay=utDaysInYear-31s32--Set endif ;if_then utDaysInYear>60s32andutDaysInYear<=91s32 then utMonth=3s32--Set;utDay=utDaysInYear-60s32--Set endif ;if_then utDaysInYear>91s32andutDaysInYear<=121s32 then utMonth=4s32--Set;utDay=utDaysInYear-91s32--Set endif ;if_then utDaysInYear>121s32andutDaysInYear<=152s32 then utMonth=5s32--Set;utDay=utDaysInYear-121s32--Set endif ;if_then utDaysInYear>152s32andutDaysInYear<=182s32 then utMonth=6s32--Set;utDay=utDaysInYear-152s32--Set endif ;if_then utDaysInYear>182s32andutDaysInYear<=213s32 then utMonth=7s32--Set;utDay=utDaysInYear-182s32--Set endif ;if_then utDaysInYear>213s32andutDaysInYear<=244s32 then utMonth=8s32--Set;utDay=utDaysInYear-213s32--Set endif ;if_then utDaysInYear>244s32andutDaysInYear<=274s32 then utMonth=9s32--Set;utDay=utDaysInYear-244s32--Set endif ;if_then utDaysInYear>274s32andutDaysInYear<=305s32 then utMonth=10s32--Set;utDay=utDaysInYear-274s32--Set endif ;if_then utDaysInYear>305s32andutDaysInYear<=335s32 then utMonth=11s32--Set;utDay=utDaysInYear-305s32--Set endif ;if_then utDaysInYear>335s32andutDaysInYear<=366s32 then utMonth=12s32--Set;utDay=utDaysInYear-335s32--Set endif } endif };WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$) +$.$+convert(utYear,$$)--Set;WPTime=convert(utHour,$$)+$.$+convert(utMinute ,$$)--Set;WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime--Set;UnixTime=convert(split(Buffer_WP,396u16,399u16 ),0u32)--Set;< in >if_then change(Buffer_WP)andBuffer_WP!=$$<
ID:35
Woran liegt denn dies?
Viele Grüße
Michael
das neue Makro von Dir funktioniert mit folgender if-Abfrage:
[highlight=epc]
if change(Buffer_WP) and Buffer_WP!=$$ then \\
UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime \\
endif
[/highlight]
Wenn ich das Makro aber so innerhalb einer if-Abfrage mehrmals aufrufe:
[highlight=epc]
if change(Buffer_WP) and Buffer_WP!=$$ then \\
UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime; \\
UnixTime=convert(split(Buffer_WP,396u16,399u16),0u 32); \\
UnixTimeToVar(ut,UnixTime); \\
WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); \\
WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; \\
WP_Fehler_Zeitpunkt1=WPDate+$ $+WPTime \\
endif
[/highlight]
... ist die Fehlermeldung an Länge nicht zu überbieten:
Syntaxfehler in Zeile:[271]
>if change(Buffer_WP) and Buffer_WP!=$$ then UnixTime=convert(split(Buffer_WP,392u16,395u16),0u 32); UnixTimeToVar(ut,UnixTime); WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime; UnixTime=convert(split(Buffer_WP,396u16,399u16),0u 32); UnixTimeToVar(ut,UnixTime); WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$)+$ .$+convert(utYear,$$); WPTime=convert(utHour,$$)+$.$+convert(utMinute,$$) ; WP_Fehler_Zeitpunkt1=WPDate+$ $+WPTime endif< in der Datei "./tmpApp.txt"
Deklaration der Variable muss eindeutig sein in >utMonth=0s32< in >Mak:unixtimetovar==>< in >UnixTime=convert(split(Buffer_WP,392u16,395u16),0 u32)--Set;Mak:unixtimetovar==>__UnixTimeToVar_1__unixtim e=convert(UnixTime,0s32)--Set;utMonth=0s32--Set;utDay=0s32--Set;utSecond=mod(__UnixTimeToVar_1__unixtime,60s32 )--Set;utMinute=mod(__UnixTimeToVar_1__unixtime-utSecond,3600s32)/60s32--Set;utHour=mod(__UnixTimeToVar_1__unixtime-utMinute*60s32-utSecond,86400s32)/3600s32--Set;__UnixTimeToVar_0__remainder=__UnixTimeToVar_1 __unixtime-utHour*3600s32+utMinute*60s32+utSecond--Set;;utYear=__UnixTimeToVar_0__remainder/365s32*24s32*60s32*60s32+1970s32--Set;utDaysFromLeapYears=utYear-1s32-1968s32/4s32-utYear-1s32-1900s32/100s32+utYear-1s32-1600s32/400s32--Set;utLeapYear=mod(utYear,4s32)==0s32ANDmod(utYear ,100s32)!=0s32 or mod(utYear,400s32)==0s32--Set;utDaysInYear=__UnixTimeToVar_0__remainder-utYear-1970s32*365s32*24s32*60s32*60s32/86400s32-utDaysFromLeapYears+1s32--Set;if_then !utLeapYear then if_then utDaysInYear>0s32andutDaysInYear<=31s32 then utMonth=1s32--Set;utDay=utDaysInYear--Set endif ;if_then utDaysInYear>31s32andutDaysInYear<=59s32 then utMonth=2s32--Set;utDay=utDaysInYear-31s32--Set endif ;if_then utDaysInYear>59s32andutDaysInYear<=90s32 then utMonth=3s32--Set;utDay=utDaysInYear-59s32--Set endif ;if_then utDaysInYear>90s32andutDaysInYear<=120s32 then utMonth=4s32--Set;utDay=utDaysInYear-90s32--Set endif ;if_then utDaysInYear>120s32andutDaysInYear<=151s32 then utMonth=5s32--Set;utDay=utDaysInYear-120s32--Set endif ;if_then utDaysInYear>151s32andutDaysInYear<=181s32 then utMonth=6s32--Set;utDay=utDaysInYear-151s32--Set endif ;if_then utDaysInYear>181s32andutDaysInYear<=212s32 then utMonth=7s32--Set;utDay=utDaysInYear-181s32--Set endif ;if_then utDaysInYear>212s32andutDaysInYear<=243s32 then utMonth=8s32--Set;utDay=utDaysInYear-212s32--Set endif ;if_then utDaysInYear>243s32andutDaysInYear<=273s32 then utMonth=9s32--Set;utDay=utDaysInYear-243s32--Set endif ;if_then utDaysInYear>273s32andutDaysInYear<=304s32 then utMonth=10s32--Set;utDay=utDaysInYear-273s32--Set endif ;if_then utDaysInYear>304s32andutDaysInYear<=334s32 then utMonth=11s32--Set;utDay=utDaysInYear-304s32--Set endif ;if_then utDaysInYear>334s32andutDaysInYear<=365s32 then utMonth=12s32--Set;utDay=utDaysInYear-334s32--Set endif } endif ;if_then utLeapYear then if_then utDaysInYear>0s32andutDaysInYear<=31s32 then utMonth=1s32--Set;utDay=utDaysInYear--Set endif ;if_then utDaysInYear>31s32andutDaysInYear<=60s32 then utMonth=2s32--Set;utDay=utDaysInYear-31s32--Set endif ;if_then utDaysInYear>60s32andutDaysInYear<=91s32 then utMonth=3s32--Set;utDay=utDaysInYear-60s32--Set endif ;if_then utDaysInYear>91s32andutDaysInYear<=121s32 then utMonth=4s32--Set;utDay=utDaysInYear-91s32--Set endif ;if_then utDaysInYear>121s32andutDaysInYear<=152s32 then utMonth=5s32--Set;utDay=utDaysInYear-121s32--Set endif ;if_then utDaysInYear>152s32andutDaysInYear<=182s32 then utMonth=6s32--Set;utDay=utDaysInYear-152s32--Set endif ;if_then utDaysInYear>182s32andutDaysInYear<=213s32 then utMonth=7s32--Set;utDay=utDaysInYear-182s32--Set endif ;if_then utDaysInYear>213s32andutDaysInYear<=244s32 then utMonth=8s32--Set;utDay=utDaysInYear-213s32--Set endif ;if_then utDaysInYear>244s32andutDaysInYear<=274s32 then utMonth=9s32--Set;utDay=utDaysInYear-244s32--Set endif ;if_then utDaysInYear>274s32andutDaysInYear<=305s32 then utMonth=10s32--Set;utDay=utDaysInYear-274s32--Set endif ;if_then utDaysInYear>305s32andutDaysInYear<=335s32 then utMonth=11s32--Set;utDay=utDaysInYear-305s32--Set endif ;if_then utDaysInYear>335s32andutDaysInYear<=366s32 then utMonth=12s32--Set;utDay=utDaysInYear-335s32--Set endif } endif };WPDate=convert(utDay,$$)+$.$+convert(utMonth,$$) +$.$+convert(utYear,$$)--Set;WPTime=convert(utHour,$$)+$.$+convert(utMinute ,$$)--Set;WP_Fehler_Zeitpunkt0=WPDate+$ $+WPTime--Set;UnixTime=convert(split(Buffer_WP,396u16,399u16 ),0u32)--Set;< in >if_then change(Buffer_WP)andBuffer_WP!=$$<
ID:35
Woran liegt denn dies?
Viele Grüße
Michael
Kommentar