compiler meldet Fehler bei syssec-Funktion und ich komme nicht darauf, was ich falsch mache

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • compiler meldet Fehler bei syssec-Funktion und ich komme nicht darauf, was ich falsch mache

      Ich probiere aus der aktuellen Zeit und Datum herauszufinden, ob ich mich im Sommerzeitrahmen befinde.
      Der compiler meckert und ich komme nicht drauf, wo mein Fehler steckt. :cursing:

      BASCOM-Quellcode

      1. '(
      2. Die Regeln für die Zeitumstellung
      3. Für die Sommerzeit gilt:
      4. Die Zeitumstellung findet am letzten Sonntag im März statt.
      5. Dabei wird um 2:00 Uhr die Uhr um eine Stunde vorgestellt.
      6. Das bedeutet : "Die Nacht ist eine Stunde kürzer".
      7. Für die Winterzeit (Normalzeit) gilt:
      8. Die Zeitumstellung findet am letzten Sonntag im Oktober statt.
      9. Um 3:00 Uhr wird die Uhr um eine Stunde zurückgestellt.
      10. Das bedeutet : "Die Nacht ist eine Stunde länger".
      11. ')
      12. $regfile = "m328pdef.dat"
      13. $crystal = 16000000
      14. $hwstack = 34
      15. $swstack = 32
      16. $framesize = 64
      17. $baud = 9600
      18. Config Clock = User
      19. Config Date = Dmy , Separator = .
      20. Dim Sec_szbeginn As Long 'syssec der Zeitumstellung auf Sommerzeit im Beispieljahr
      21. Dim Sec_szende As Long 'syssec der Zeitumstellung auf Winterzeit im Beispieljahr
      22. Dim W_t_2503 As Byte 'Wochentag vom 25.März
      23. Dim W_t_2510 As Byte 'Wochentag vom 25.Oktober
      24. Dim Datum_2503 As String * 8
      25. Dim Datum_letzter_sonntag As String * 8
      26. Dim Tage_bis_sonntag As Byte
      27. Dim Letzter_sonntag As Byte
      28. Const Zeit_beginn = "02:00:00" 'MEZ
      29. Const Zeit_ende = "03:00:00" 'MESZ
      30. Dim Systemsekunde As Long
      31. _year = 19 'Beispiel 2019
      32. _month = 03
      33. _day = 30
      34. _hour = 03 'MEZ
      35. _min = 00
      36. _sec = 00
      37. Systemsekunde = Syssec()
      38. Time$ = Time(systemsekunde)
      39. Print Time$ ; " ";
      40. Gosub Abgrenzung_sommerzeit
      41. If Systemsekunde >= sec_szbeginn Then Systemsekunde = Systemsekunde + 3600
      42. If Systemsekunde >= sec_szende Then Systemsekunde = Systemsekunde - 3600
      43. Time$ = Time(systemsekunde)
      44. Print Time$
      45. _year = 19 'Beispiel 2019
      46. _month = 03
      47. _day = 30
      48. _hour = 03 'MEZ
      49. _min = 00
      50. _sec = 00
      51. Systemsekunde = Syssec()
      52. Time$ = Time(systemsekunde)
      53. Print Time$ ; " ";
      54. Gosub Abgrenzung_sommerzeit
      55. If Systemsekunde >= sec_szbeginn Then Systemsekunde = Systemsekunde + 3600
      56. If Systemsekunde >= sec_szende Then Systemsekunde = Systemsekunde - 3600
      57. Time$ = Time(systemsekunde)
      58. Print Time$
      59. _year = 19 'Beispiel 2019
      60. _month = 03
      61. _day = 31
      62. _hour = 02 'MEZ
      63. _min = 00
      64. _sec = 00
      65. Systemsekunde = Syssec()
      66. Time$ = Time(systemsekunde)
      67. Print Time$ ; " ";
      68. Gosub Abgrenzung_sommerzeit
      69. If Systemsekunde >= sec_szbeginn Then Systemsekunde = Systemsekunde + 3600
      70. If Systemsekunde >= sec_szende Then Systemsekunde = Systemsekunde - 3600
      71. Time$ = Time(systemsekunde)
      72. Print Time$
      73. _year = 19 'Beispiel 2019
      74. _month = 10
      75. _day = 27
      76. _hour = 02 'MESZ
      77. _min = 00
      78. _sec = 00
      79. Systemsekunde = Syssec()
      80. Time$ = Time(systemsekunde)
      81. Print Time$ ; " ";
      82. Gosub Abgrenzung_sommerzeit
      83. If Systemsekunde >= sec_szbeginn Then Systemsekunde = Systemsekunde + 3600
      84. If Systemsekunde >= sec_szende Then Systemsekunde = Systemsekunde - 3600
      85. Time$ = Time(systemsekunde)
      86. Print Time$
      87. _year = 19 'Beispiel 2019
      88. _month = 10
      89. _day = 27
      90. _hour = 03 'MESZ
      91. _min = 00
      92. _sec = 00
      93. Systemsekunde = Syssec()
      94. Time$ = Time(systemsekunde)
      95. Print Time$ ; " ";
      96. Gosub Abgrenzung_sommerzeit
      97. If Systemsekunde >= sec_szbeginn Then Systemsekunde = Systemsekunde + 3600
      98. If Systemsekunde >= sec_szende Then Systemsekunde = Systemsekunde - 3600
      99. Time$ = Time(systemsekunde)
      100. Print Time$
      101. End
      102. Abgrenzung_sommerzeit:
      103. Datum_2503 = "25.03" + Str(_year)
      104. W_t_2503 = Dayofweek(datum_2503) 'ergibt Wochentag des 25.März im Beispieljahr
      105. Tage_bis_sonntag = 6 - W_t_2503
      106. Letzter_sonntag = 25 + Tage_bis_sonntag 'letzter Sonntag im März des Beispieljahres
      107. Datum_letzter_sonntag = Str(letzter_sonntag) + "."
      108. Datum_letzter_sonntag = Datum_letzter_sonntag + "03."
      109. Datum_letzter_sonntag = Datum_letzter_sonntag + Str(_year)
      110. Sec_szbeginn = Syssec(zeit_beginn , Datum_letzter_sonntag) 'ab dieser Sekunde MEZ beginnt die Sommerzeit im Beispieljahr
      111. W_t_2510 = W_t_2503 + 4 : If W_t_2510 > 6 Then W_t_2510 = W_t_2510 -7 'ergibt Wochentag des 25.Oktober im Beispieljahr
      112. Tage_bis_sonntag = 6 - W_t_2510
      113. Letzter_sonntag = 25 + Tage_bis_sonntag 'letzter Sonntag im Oktober des Beispieljahres
      114. Datum_letzter_sonntag = Str(letzter_sonntag) + "."
      115. Datum_letzter_sonntag = Datum_letzter_sonntag + "10."
      116. Datum_letzter_sonntag = Datum_letzter_sonntag + Str(_year)
      117. Sec_szende = Syssec(zeit_ende , Datum_letzter_sonntag) 'ab dieser Sekunde MESZ endet die Sommerzeit im Beispieljahr
      118. Return
      Alles anzeigen
      bemeckert wird Zeile 128 und 135

      Error : 63 Line : 128 Integer or Long expected for ABS() , in File : G:\Bascom\Sommerzeitprüfung\Sommerzeitprüfung.bas
      Error : 63 Line : 135 Integer or Long expected for ABS() , in File : G:\Bascom\Sommerzeitprüfung\Sommerzeitprüfung.bas
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Nachdem ich noch weitere Fehler behoben habe, könnte mein Programm funktionieren.
      Sinn ist es, von UTC, aus einem GPS-Empfangsmodul auf MEZ bzw MESZ zu kommen, die dann angezeigt wird. Der ganze Aufwand nur deshalb, weil die Uhr zu jeder Zeit in Betrieb genommen werden kann und dann nicht unbedingt an den Umschaltezeitpunkten vorbei kommt.

      BASCOM-Quellcode

      1. '(
      2. Die Regeln für die Zeitumstellung
      3. Für die Sommerzeit gilt:
      4. Die Zeitumstellung findet am letzten Sonntag im März statt.
      5. Dabei wird um 2:00 Uhr MEZ die Uhr um eine Stunde vorgestellt.
      6. Das bedeutet : "Die Nacht ist eine Stunde kürzer".
      7. Für die Winterzeit (Normalzeit) gilt:
      8. Die Zeitumstellung findet am letzten Sonntag im Oktober statt.
      9. Um 3:00 Uhr MESZ wird die Uhr um eine Stunde zurückgestellt.
      10. Das bedeutet : "Die Nacht ist eine Stunde länger".
      11. ')
      12. $regfile = "m328pdef.dat"
      13. $crystal = 16000000
      14. $hwstack = 34
      15. $swstack = 32
      16. $framesize = 64
      17. $baud = 9600
      18. Config Clock = User
      19. Config Date = Dmy , Separator = .
      20. Dim Sec_szbeginn As Long 'syssec der Zeitumstellung auf Sommerzeit im Beispieljahr
      21. Dim Sec_szende As Long 'syssec der Zeitumstellung auf Winterzeit im Beispieljahr
      22. Dim W_t_2503 As Byte 'Wochentag vom 25.März
      23. Dim W_t_2510 As Byte 'Wochentag vom 25.Oktober
      24. Dim Datum_2503 As String * 8
      25. Dim Datum_letzter_sonntag As String * 8
      26. Dim Tage_bis_sonntag As Byte
      27. Dim Letzter_sonntag As Byte
      28. Dim Zeit_beginn As String * 8
      29. Zeit_beginn = "01:00:00" 'UTC
      30. Dim Zeit_ende As String * 8
      31. Zeit_ende = "02:00:00" 'UTC+1
      32. Dim Systemsekunde As Long
      33. Dim Utc_systemsekunde As Long
      34. Dim _utc_sec As Byte , _utc_min As Byte , _utc_hour As Byte , _utc_day As Byte , _utc_month As Byte , _utc_year As Byte
      35. _utc_year = 19 'Beispiel 2019
      36. _utc_month = 10
      37. _utc_day = 27
      38. _utc_hour = 02 'MEZ
      39. _utc_min = 00
      40. _utc_sec = 00
      41. Utc_systemsekunde = Syssec(_utc_sec)
      42. Time$ = Time(utc_systemsekunde)
      43. Print "UTC-" ; Time$ ; " UTC-Systemsekunde= " ; Utc_systemsekunde ; " ";
      44. Gosub Abgrenzung_sommerzeit
      45. If Utc_systemsekunde >= Sec_szbeginn And Utc_systemsekunde < Sec_szende Then
      46. Systemsekunde = Utc_systemsekunde + 7200 'MESZ
      47. Else
      48. Systemsekunde = Utc_systemsekunde + 3600 'MEZ
      49. End If
      50. _sec = Time(systemsekunde)
      51. _day = Date(systemsekunde)
      52. Time$ = Time(systemsekunde)
      53. Print Time$ ; " SZbeginn= " ; Sec_szbeginn ; " SZende= " ; Sec_szende
      54. Print
      55. End
      56. Abgrenzung_sommerzeit:
      57. Datum_2503 = "25.03." + Str(_utc_year)
      58. W_t_2503 = Dayofweek(datum_2503) 'ergibt Wochentag des 25.März im Beispieljahr
      59. Tage_bis_sonntag = 6 - W_t_2503
      60. Letzter_sonntag = 25 + Tage_bis_sonntag 'letzter Sonntag im März des Beispieljahres
      61. Datum_letzter_sonntag = Str(letzter_sonntag) + ".03."
      62. Datum_letzter_sonntag = Datum_letzter_sonntag + Str(_utc_year)
      63. Sec_szbeginn = Syssec(zeit_beginn , Datum_letzter_sonntag) 'ab dieser Sekunde MEZ beginnt die Sommerzeit im Beispieljahr
      64. W_t_2510 = W_t_2503 + 4 : If W_t_2510 > 6 Then W_t_2510 = W_t_2510 -7 'ergibt Wochentag des 25.Oktober im Beispieljahr
      65. Tage_bis_sonntag = 6 - W_t_2510
      66. Letzter_sonntag = 25 + Tage_bis_sonntag 'letzter Sonntag im Oktober des Beispieljahres
      67. Datum_letzter_sonntag = Str(letzter_sonntag) + ".10."
      68. Datum_letzter_sonntag = Datum_letzter_sonntag + Str(_utc_year)
      69. Sec_szende = Syssec(zeit_ende , Datum_letzter_sonntag) 'ab dieser Sekunde MESZ endet die Sommerzeit im Beispieljahr
      70. Return
      71. Getdatetime:
      72. Return
      73. Settime:
      74. Return
      Alles anzeigen
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------