Ankündigung

Einklappen
Keine Ankündigung bisher.

gesucht: IP mit u32 in String und umgekehrt

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

    #31
    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

    Kommentar


      #32
      Moin Michael,

      Woran liegt denn dies?
      Die Variablen müssen ja irgendwo deklariert werden und deren Typ muß festgelegt werden. Das wird alles im Makro gemacht. Wenn Du das Makro mit demselben Namen zweimal aufrufst, werden die auch zweimal definiert.

      Entweder Du nimmst für das zweite dann nicht ut sonder z.B. ut2 oder Du mußt das Makro für Deine Zwecke umbauen.

      Gruß,
      Bernd

      Kommentar


        #33
        Hallo Bernd,

        vielen Dank für Dein Feedback.

        Dann werde ich erst einmal auf ut1 ... ut5 gehen.

        Alternativ würde das Makro ja vermutlich auch funktionieren, wenn ich alle Variablen im Hauptprogramm definiere und nur die Berechnung ins Makro auslagere.

        Viele Grüße

        Michael

        Kommentar

        Lädt...
        X