1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • nach Beta-Aktualisierung kein Zugriff mehr auf Beta

    • BugFix
    • 26. Juli 2006 um 18:43

    Hab ich zwar nicht so richtig Bock drauf - aber scheinbar gehts nicht anders.
    Danke.

    @jonk
    Hast du Scite einfach drübergebügelt oder erst deinstalliert?

  • Frage zu WinGetState

    • BugFix
    • 26. Juli 2006 um 18:39

    Hier ein Codeschnipsel:

    Code
    GUISetState(@SW_SHOW, $auswahl)
    While 1
    	Sleep(500) ; Prozessorlast verringern
    	$state1 = WinGetState($main_wdw1)
    	$state2 = WinGetState($main_wdw2)
    	$state3 = WinGetState("Aktuellen Report Ändern")
    	$msg = GUIGetMsg()
    	Select
    		Case $state1 = 0 And $state2 = 0 And $state3 <> 8
    			Run($appl)
    			_report()
    			GUISetState(@SW_SHOW, $gui)
    Alles anzeigen


    Das vor Schleifeneintritt aufgerufene Fenster wird mit "$state3" abgefragt. Da das Fenster aktiv ist sollte WinGetState() hier doch '8' liefern und somit nicht die Bedingungen für die erste case-Abfrage erfüllen.
    Jedoch wird beim Test das Fenster kurz angezeigt und dann wird der Code unterhalb der ersten case-Bedingung ausgeführt.
    Hab ich was falsch gemacht?

  • nach Beta-Aktualisierung kein Zugriff mehr auf Beta

    • BugFix
    • 26. Juli 2006 um 18:22

    Hallo,
    hab mir gerade die neue Beta-Version auf meinem Laptop installiert. Obwohl alle Dateien der Beta vorhanden sind, der Registryeintrag stimmt und auch die au3.properties unverändert sind kann ich weder Syntaxcheck noch Run in der Beta ausführen.

    Code
    >C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe /beta /AU3Check /in "C:\Dokumente und Einstellungen\Standard\Desktop\AU3-Scripte\ReportToPDF.au3"
    >Running AU3Check   params:  from:C:\Programme\AutoIt3\SciTE\au3check\
    C:\Dokumente und Einstellungen\Standard\Desktop\AU3-Scripte\ReportToPDF.au3(86,24) : ERROR: _IsPressed(): undefined function.
    		While _IsPressed("78")
    		~~~~~~~~~~~~~~~~~~~~~^

    Hat jemand 'ne Idee?
    Registry und au3.properties sind identisch mit den Einträgen auf meinem PC. Dort funzt auch alles - mit der vorigen Beta.

  • Wochentag- Feiertagsermittlung

    • BugFix
    • 16. Juli 2006 um 21:15

    Hab noch alles da.
    Hier in voller Schönheit die GUI:

    Spoiler anzeigen
    C
    #include-once
    ;===============================================================================
    ;								Contents
    ;	_DateToNorm()
    ;		Convert date ( YYYY/MM/DD ) to german notation ( DD.MM.YYYY )
    ;	_NowNormDate()
    ;		Output current date in german notation ( DD.MM.YYYY )
    ;	_Easter()
    ;		Returns the date of easter in specified year between 1583 and 2999
    ;	_WeekDay()
    ;		Determination weekday from any date, Formula by Christian Zeller
    ;	_Div()
    ;		Give the integer part of an division by using the same notation
    ;		like function 'Mod($a, $b)'
    ;
    ;===============================================================================
    
    
    #include <math.au3>
    
    
    ;===============================================================================
    ;
    ; Function Name:   	_DateToNorm()
    ;
    ; Description:      Convert date ( YYYY/MM/DD ) to german notation ( DD.MM.YYYY )
    ;
    ; Parameter:		$date(YYYY/MM/DD)
    ;
    ; Return Value:		(DD.MM.YYYY)
    ;
    ;===============================================================================
    Func _DateToNorm($date)
    	Return StringMid($date,9) & "." & StringMid($date,6,2) & "." & StringMid($date,1,4)
    EndFunc
    
    
    ;===============================================================================
    ;
    ; Function Name:   	_NowNormDate()
    ;
    ; Description:      Output current date in german notation ( DD.MM.YYYY )
    ;
    ; Parameter:		Non
    ;
    ; Return Value:		(DD.MM.YYYY)
    ;
    ;===============================================================================
    Func _NowNormDate()
    	Return ( @MDAY & "." & @MON & "." & @YEAR )
    EndFunc
    
    
    ;===============================================================================
    ;
    ; Function Name:   	_Easter()
    ;
    ; Description:      Returns the date of easter in specified year
    ;                   between 1583 and 2999
    ; Parameter(s):     $year
    ; 
    ; Return Value(s):  On Success - easterdate
    ;                   On Failure - -1 and sets @ERROR = 1
    ; Author(s):        BugFix (bug_fix@web.de)
    ; Note(s):          
    ;
    ;===============================================================================
    Func _Easter($year)
    	;Determination Easter with formula by C. F. Gauss
    	;Ermittlung Ostern (Osterformel C. F. Gauss)
    	If $year > 1582 And $year < 3000 Then		
    		$a = Mod($year,19)
    		$b = Mod($year,4)
    		$c = Mod($year,7)
    		$H1 = _Div($year,100)	; _Div($a, $b) is a userdefined function 
    		$H2 = _Div($year,400)	; Int($year / 100) give the same output
    		$N = 4 + $H1 - $H2
    		$M = 15 + $H1 - $H2 - _Floor(_Div((8 * $H1 + 13),25))
    		$d = Mod((19 * $a + $M),30)
    		$e = Mod((2 * $b + 4 * $c + 6 * $d + $N),7)
    		If $d + $e = 35 Then
    			$Easter = 50
    		Else
    			If $d = 28 And $e =6 And $a > 10 Then
    				$Easter = 49
    			Else
    				$Easter = 22 + $d + $e
    			EndIf
    		EndIf
    		If $Easter < 32 Then
    			$EasterDay = $Easter
    			$EasterMonth = "03"			
    		Else
    			$EasterDay = $Easter - 31
    			$EasterMonth = "04"
    		EndIf
    		If $EasterDay < 10 Then
    			$EasterDay = "0" & $Easterday
    		EndIf
    		$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
    ;		$EasterDate = $EasterDay & "." & $EasterMonth & "." & $year			german notation
    	Else
    		$EasterDate = -1	; input year is out of range
    		SetError(1)
    	EndIf
    	Return $EasterDate
    EndFunc	;==>_easter()
    
    
    ;===============================================================================
    ;
    ; Function Name:   	_WeekDay()
    ;
    ; Description:     	Determination weekday from any date
    ;					Formula by Christian Zeller
    ;
    ; Parameter:		$day, $mon, $year (as integer)
    ;
    ; Return Value:		Weekday
    ;
    ; Author(s):        BugFix (bug_fix@web.de)
    ;
    ; It works correct for Gregorian calendar (1583 - 8201)
    ;===============================================================================
    Func _WeekDay($day, $month, $year)
    		$leap = 0
    		If _DateIsLeapYear($year) Then			;check leapyear
    			$leap = 1
    		EndIf
    		$D = $day
    		;check february date and correct if out of range
    		If $month = 2 and $D > 28 Then			
    			If $leap = 0 Then
    				$D = 28				
    			Else
    				$D = 29
    			EndIf
    			; as alternative - do'nt correct and give failure
    			;SetError(1)
    			;Return -1
    		EndIf
    		;check 30-day months and correct if out of range
    		If ($month = 4 Or $month = 6 Or $month = 9 Or $month = 11) And $D > 30 Then
    			$D = 30
    			; as alternative - do'nt correct and give failure
    			;SetError(1)
    			;Return -1
    		EndIf		
    		$C = Int($year/100)						;determination century
    		$Y = Mod($year, 100)					;determination year
    
    		If $month < 3 Then						;Jan. and Feb. be among to last year(century)
    			If $Y = 0 Then						
    				$Y = 99
    				$C =$C -1
    			Else
    				$Y = $Y - 1	
    			EndIf
    		EndIf
    
    		Select
    		Case $month > 2							;old latin calendar begins with month 'march'
    			$M = $month-2
    		Case Else
    			$M = $month+10
    		EndSelect
    
    		; Zeller's formula:
    		$W = Mod((_Floor(2.6*$M-0.2)+$D+$Y+(_Floor($Y/4))+(_Floor($C/4))-2*$C), 7)
    
    		; If $W is negativ , you must be add 7 , so that $W will be positiv. 
    		; This number is equivalent to weekday.
    		If $W < 0 Then
    			$W = $W + 7
    		EndIf
    
    		Select
    		Case $W = 0				
    			$WeekDay = "Sonntag"		; Sunday
    		Case $W = 1
    			$WeekDay = "Montag"			; Monday
    		Case $W = 2
    			$WeekDay = "Dienstag"		; Tuesday
    		Case $W = 3
    			$WeekDay = "Mittwoch"		; Wednesday
    		Case $W = 4
    			$WeekDay = "Donnerstag"		; Thursday
    		Case $W = 5
    			$WeekDay = "Freitag"		; Friday
    		Case $W = 6
    			$WeekDay = "Sonnabend"		; Saturday
    		EndSelect		
    		Return $WeekDay
    EndFunc	;==>_WeekDay
    
    
    ;===============================================================================
    ;
    ; Function Name:   	_Div()
    ;
    ; Description:     	Give the integer part of an division
    ;
    ; Syntax:          	_Div(value1, value2)
    ;
    ; Parameter(s):    	value1	= dividend
    ;                  	value2 	= divisor
    ;
    ;===============================================================================
    Func _Div($a, $b)
    	Return Int($a / $b)
    EndFunc	;==>_Div
    
    
    ;=====================================================================================================
    ;	Beginn Code																						 ;
    ;=====================================================================================================
    
    
    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.0
    ;
    ; Osterformel (Gauss)
    ;      a = Jahr mod 19
    ;     b = Jahr mod 4
    ;     c = Jahr mod 7
    ;    H1 = Jahr div 100
    ;    H2 = Jahr div 400
    ;     N = 4 + H1 - H2
    ;     M = 15 + H1 - H2 - [(8 * H1 + 13) div 25]
    ;     d = (19 * a + M) mod 30
    ;     e = (2 * b + 4 * c + 6 * d + N) mod 7
    ; wenn d + e = 35, dann ostern = 50
    ; wenn d = 28 und e = 6 und a > 10, dann ostern = 49
    ; in allen anderen Fällen: ostern = 22 + d + e
    ; ostern: Ostersonntag als Märzdatum
    ;
    ; ----------------------------------------------------------------------------
    
    
    #include <GuiConstants.au3>
    #include <Date.au3>
    #include <math.au3>
    
    
    
    
    GuiCreate("Wochen- und Feiertagsbestimmung", 680, 485,(@DesktopWidth-680)/2, (@DesktopHeight-485)/2 )
    GUISetBkColor (0xFFFACD)
    $L_Header = GuiCtrlCreateLabel("Bestimmen Sie den Wochentag ! (gültig: 1583 - 8201)", 200, 10, 280, 20)
    GUICtrlSetColor($L_Header,0xFF0000)
    $L_CurrDate = GuiCtrlCreateLabel(_NowNormDate(),620,10,60,20)
    
    
    ;Gruppe Optionsfelder zur Datumsauswahl
    $Group_T = GuiCtrlCreateGroup("Tag", 15, 25, 650, 60)
    $R1 = GuiCtrlCreateRadio("01", 20, 45, 30, 15)
    GUICtrlSetState($R1,$gui_checked)
    $R2 = GuiCtrlCreateRadio("02", 60, 45, 30, 15)
    $R3 = GuiCtrlCreateRadio("03", 100, 45, 30, 15)
    $R4 = GuiCtrlCreateRadio("04", 140, 45, 30, 15)
    $R5 = GuiCtrlCreateRadio("05", 180, 45, 30, 15)
    $R6 = GuiCtrlCreateRadio("06", 220, 45, 30, 15)
    $R7 = GuiCtrlCreateRadio("07", 260, 45, 30, 15)
    $R8 = GuiCtrlCreateRadio("08", 300, 45, 30, 15)
    $R9 = GuiCtrlCreateRadio("09", 340, 45, 30, 15)
    $R10 = GuiCtrlCreateRadio("10", 380, 45, 30, 15)
    $R11 = GuiCtrlCreateRadio("11", 420, 45, 30, 15)
    $R12 = GuiCtrlCreateRadio("12", 460, 45, 30, 15)
    $R13 = GuiCtrlCreateRadio("13", 500, 45, 30, 15)
    $R14 = GuiCtrlCreateRadio("14", 540, 45, 30, 15)
    $R15 = GuiCtrlCreateRadio("15", 580, 45, 30, 15)
    $R16 = GuiCtrlCreateRadio("16", 20, 60, 30, 15)
    $R17 = GuiCtrlCreateRadio("17", 60, 60, 30, 15)
    $R18 = GuiCtrlCreateRadio("18", 100, 60, 30, 15)
    $R19 = GuiCtrlCreateRadio("19", 140, 60, 30, 15)
    $R20 = GuiCtrlCreateRadio("20", 180, 60, 30, 15)
    $R21 = GuiCtrlCreateRadio("21", 220, 60, 30, 15)
    $R22 = GuiCtrlCreateRadio("22", 260, 60, 30, 15)
    $R23 = GuiCtrlCreateRadio("23", 300, 60, 30, 15)
    $R24 = GuiCtrlCreateRadio("24", 340, 60, 30, 15)
    $R25 = GuiCtrlCreateRadio("25", 380, 60, 30, 15)
    $R26 = GuiCtrlCreateRadio("26", 420, 60, 30, 15)
    $R27 = GuiCtrlCreateRadio("27", 460, 60, 30, 15)
    $R28 = GuiCtrlCreateRadio("28", 500, 60, 30, 15)
    $R29 = GuiCtrlCreateRadio("29", 540, 60, 30, 15)
    $R30 = GuiCtrlCreateRadio("30", 580, 60, 30, 15)
    $R31 = GuiCtrlCreateRadio("31", 620, 60, 30, 15)
    
    
    $Group_M = GuiCtrlCreateGroup("Monat", 15, 100, 255, 60)
    $R1m = GuiCtrlCreateRadio("01", 20, 120, 30, 15)
    GUICtrlSetState($R1m,$gui_checked)
    $R2m = GuiCtrlCreateRadio("02", 60, 120, 30, 15)
    $R3m = GuiCtrlCreateRadio("03", 100, 120, 30, 15)
    $R4m = GuiCtrlCreateRadio("04", 140, 120, 30, 15)
    $R5m = GuiCtrlCreateRadio("05", 180, 120, 30, 15)
    $R6m = GuiCtrlCreateRadio("06", 220, 120, 30, 15)
    $R7m = GuiCtrlCreateRadio("07", 20, 135, 30, 15)
    $R8m = GuiCtrlCreateRadio("08", 60, 135, 30, 15)
    $R9m = GuiCtrlCreateRadio("09", 100, 135, 30, 15)
    $R10m = GuiCtrlCreateRadio("10", 140, 135, 30, 15)
    $R11m = GuiCtrlCreateRadio("11", 180, 135, 30, 15)
    $R12m = GuiCtrlCreateRadio("12", 220, 135, 30, 15)
    
    
    $L_MsgTag = GUICtrlCreateLabel("",340,100,200,20)
    GUICtrlSetColor($L_MsgTag,0xFF0000)
    $L_Year = GuiCtrlCreateLabel("Jahr", 340, 122, 40, 20)
    $But_minus = GUICtrlCreateButton("-",406,123,15,15)
    $But_plus = GUICtrlCreateButton("+",468,123,15,15)
    $Inp_Year = GUICtrlCreateInput(StringMid(_NowCalcDate(),1,4), 425, 120, 40, 20)
    $But_Start = GuiCtrlCreateButton("Start", 615, 105, 50, 20)
    $But_Ende = GUICtrlCreateButton("Ende",615,145,50,20)
    $L_LeapYear = GUICtrlCreateLabel("",500,122,80,20)
    $L_WeekDay = GuiCtrlCreateLabel("Wochentag:", 340, 145, 90, 20)
    $L_WDayName = GuiCtrlCreateLabel("", 417, 145, 90, 20)
    $L_Feiertage = GUICtrlCreateLabel("Die Feiertage dieses Jahres", 265, 175, 150, 20)
    $L_Fix = GUICtrlCreateLabel("Unveränderlich:", 70, 200, 90, 20)
    $L_Variabel = GUICtrlCreateLabel("Veränderlich (gültig: 1583 - 2999):", 380, 200, 170,20)
    GUICtrlSetColor($L_Feiertage,0xFF0000)
    GUICtrlSetColor($L_Fix,0xFF0000)
    GUICtrlSetColor($L_Variabel,0xFF0000)
    GUICtrlSetColor($L_LeapYear,0x0000FF)
    GUICtrlSetColor($L_WDayName,0xFF0000)
    ; Fixe Feiertage:
    $L_Neuj = GUICtrlCreateLabel("Neujahr", 80, 220, 90, 20)				
    $L_NeujDat = GUICtrlCreateLabel("01.01.", 230, 220, 70, 20)
    $WD_N = GUICtrlCreateLabel("",275,220,60,20)
    $L_3K = GUICtrlCreateLabel("Heilige Drei Könige", 80, 235, 110, 20)
    $L_3KDat = GUICtrlCreateLabel("06.01.", 230, 235, 70, 20)
    $WD_3K = GUICtrlCreateLabel("",275,235,60,20)
    $L_Val = GUICtrlCreateLabel("Valentinstag", 80, 250, 110, 20)
    $L_ValDat = GUICtrlCreateLabel("14.02.", 230, 250,70,20)
    $WD_Val = GUICtrlCreateLabel("",275,250,60,20)
    $L_Mai = GUICtrlCreateLabel("Maifeiertag",80,265,110,20)
    $L_MaiDat = GUICtrlCreateLabel("01.05.",230,265,70,20)
    $WD_Mai = GUICtrlCreateLabel("",275,265,60,20)
    $L_Einheit =GUICtrlCreateLabel("Tag der Deutschen Einheit",80,280,145,20)
    $L_EinheitDat =GUICtrlCreateLabel("03.10.",230,280,70,20)
    $WD_Einheit = GUICtrlCreateLabel("",275,280,60,20)
    $L_Ref = GUICtrlCreateLabel("Reformationstag",80,295,145,20)
    $L_RefDat = GUICtrlCreateLabel("31.10.",230,295,70,20)
    $WD_Ref = GUICtrlCreateLabel("",275,295,60,20)
    $L_Aller = GUICtrlCreateLabel("Allerheiligen",80,310,145,20)
    $L_AllerDat = GUICtrlCreateLabel("01.11.",230,310,70,20)
    $WD_Aller = GUICtrlCreateLabel("",275,310,60,20)
    $L_HlA = GUICtrlCreateLabel("Heiligabend",80,325,145,20)
    $L_HlADat = GUICtrlCreateLabel("24.12.",230,325,70,20)
    $WD_Heil = GUICtrlCreateLabel("",275,325,60,20)
    $L_1WT = GUICtrlCreateLabel("1. Weihnachtsfeiertag",80,340,145,20)
    $L_1WTDat = GUICtrlCreateLabel("25.12.",230,340,70,20)
    $WD_1W = GUICtrlCreateLabel("",275,340,60,20)
    $L_2WT = GUICtrlCreateLabel("2. Weihnachtsfeiertag",80,355,145,20)
    $L_2WTDat = GUICtrlCreateLabel("26.12.",230,355,70,20)
    $WD_2W = GUICtrlCreateLabel("",275,355,60,20)
    $L_Sil = GUICtrlCreateLabel("Silvester",80,370,145,20)
    $L_SilDat = GUICtrlCreateLabel("31.12.",230,370,70,20)
    $WD_Sil = GUICtrlCreateLabel("",275,370,60,20)
    
    
    $L_Advent = GUICtrlCreateLabel("Adventstage:",185,420,80,20)
    GUICtrlSetColor($L_Advent,0xFF0000)
    $L_1Adv = GUICtrlCreateLabel("1. Advent",80,440,60,20)
    $L_1AdvDat = GUICtrlCreateLabel("",90,460,40,20)
    $L_2Adv = GUICtrlCreateLabel("2. Advent",150,440,60,20)
    $L_2AdvDat = GUICtrlCreateLabel("",160,460,40,20)
    $L_3Adv = GUICtrlCreateLabel("3. Advent",220,440,60,20)
    $L_3AdvDat = GUICtrlCreateLabel("",230,460,40,20)
    $L_4Adv = GUICtrlCreateLabel("4. Advent",290,440,60,20)
    $L_4AdvDat = GUICtrlCreateLabel("",300,460,40,20)
    GUICtrlSetColor($L_1AdvDat,0x0000ff)
    GUICtrlSetColor($L_2AdvDat,0x0000ff)
    GUICtrlSetColor($L_3AdvDat,0x0000ff)
    GUICtrlSetColor($L_4AdvDat,0x0000ff)
    ; Variable Feiertage:
    $L_WFast  = GUICtrlCreateLabel("Weiberfastnacht",390,220,145,20)		
    $L_WFastDate  = GUICtrlCreateLabel("",550,220,70,20)
    $L_Ros  = GUICtrlCreateLabel("Rosenmontag",390,235,145,20)
    $L_RosDat  = GUICtrlCreateLabel("",550,235,70,20)
    $L_Fast  = GUICtrlCreateLabel("Fastnacht",390,250,145,20)
    $L_FastDat  = GUICtrlCreateLabel("",550,250,70,20)
    $L_Asch  = GUICtrlCreateLabel("Aschermittwoch",390,265,145,20)
    $L_AschDat  = GUICtrlCreateLabel("",550,265,70,20)
    $L_GrDo  = GUICtrlCreateLabel("Gründonnerstag",390,280,145,20)
    $L_GrDoDat  = GUICtrlCreateLabel("",550,280,70,20)
    $L_Kar  = GUICtrlCreateLabel("Karfreitag",390,295,145,20)
    $L_KarDat  = GUICtrlCreateLabel("",550,295,70,20)
    $L_OSa  = GUICtrlCreateLabel("Ostersamstag",390,310,145,20)
    $L_OSaDat  = GUICtrlCreateLabel("",550,310,70,20)
    $L_OSo  = GUICtrlCreateLabel("Ostersonntag",390,325,145,20)
    $L_OSoDat  = GUICtrlCreateLabel("",550,325,70,20)
    $L_OMo  = GUICtrlCreateLabel("Ostermontag",390,340,145,20)
    $L_OMoDat  = GUICtrlCreateLabel("",550,340,70,20)
    $L_HiFa  = GUICtrlCreateLabel("Christi Himmelfahrt",390,355,145,20)
    $L_HiFaDat  = GUICtrlCreateLabel("",550,355,70,20)
    $L_Mutter = GUICtrlCreateLabel("Muttertag",390,370,145,20)
    $L_MutterDat  = GUICtrlCreateLabel("",550,370,70,20)	
    $L_PfSo  = GUICtrlCreateLabel("Pfingstsonntag",390,385,145,20)
    $L_PfSoDat  = GUICtrlCreateLabel("",550,385,70,20)
    $L_PfMo  = GUICtrlCreateLabel("Pfingstmontag",390,400,145,20)
    $L_PfMoDat  = GUICtrlCreateLabel("",550,400,70,20)
    $L_Fro  = GUICtrlCreateLabel("Fronleichnam",390,415,145,20)
    $L_FroDat  = GUICtrlCreateLabel("",550,415,70,20)
    $L_Ernte  = GUICtrlCreateLabel("Erntedankfest",390,430,145,20)
    $L_ErnteDat  = GUICtrlCreateLabel("",550,430,70,20)
    $L_BuB  = GUICtrlCreateLabel("Buß- und Bettag",390,445,145,20)
    $L_BuBDat  = GUICtrlCreateLabel("",550,445,70,20)
    $L_TotSo = GUICtrlCreateLabel("Totensonntag",390,460,145,20)
    $L_TotSoDat = GUICtrlCreateLabel("",550,460,70,20)
    
    
    GuiSetState()
    While 1
    	$msg = GuiGetMsg()
    	If $msg = $But_minus Then
    		GUICtrlSetData($Inp_Year,GUICtrlRead($Inp_Year)-1)
    	EndIf
    	If $msg = $But_plus Then
    		GUICtrlSetData($Inp_Year,GUICtrlRead($Inp_Year)+1)
    	EndIf	
    	If $msg = $But_Start Then
    		GUICtrlSetData($L_MsgTag,"")
    		GUICtrlSetData($L_LeapYear,"")
    		GUICtrlSetData($L_WFastDate,"")
    		GUICtrlSetData($L_RosDat,"")
    		GUICtrlSetData($L_FastDat,"")
    		GUICtrlSetData($L_AschDat,"")
    		GUICtrlSetData($L_GrDoDat,"")
    		GUICtrlSetData($L_KarDat,"")
    		GUICtrlSetData($L_OSaDat,"")
    		GUICtrlSetData($L_OSoDat,"")
    		GUICtrlSetData($L_OMoDat,"")
    		GUICtrlSetData($L_HiFaDat,"")
    		GUICtrlSetData($L_PfSoDat,"")
    		GUICtrlSetData($L_MutterDat,"")
    		GUICtrlSetData($L_PfMoDat,"")
    		GUICtrlSetData($L_FroDat,"")
    		GUICtrlSetData($L_ErnteDat,"")
    		GUICtrlSetData($L_TotSoDat,"")
    		GUICtrlSetData($L_BuBDat,"")
    		GUICtrlSetData($L_WDayName, "")
    		GUICtrlSetData($WD_N,"")
    		GUICtrlSetData($WD_3K,"")
    		GUICtrlSetData($WD_Val,"")
    		GUICtrlSetData($WD_Mai,"")
    		GUICtrlSetData($WD_Einheit,"")
    		GUICtrlSetData($WD_Ref,"")
    		GUICtrlSetData($WD_Aller,"")
    		GUICtrlSetData($WD_Heil,"")
    		GUICtrlSetData($WD_1W,"")
    		GUICtrlSetData($WD_2W,"")
    		GUICtrlSetData($WD_Sil,"")
    		GUICtrlSetData($L_1AdvDat,"")
    		GUICtrlSetData($L_2AdvDat,"")
    		GUICtrlSetData($L_3AdvDat,"")
    		GUICtrlSetData($L_4AdvDat,"")
    
    
    		$day1 = GUICtrlRead($R1)
    		$day2 = GUICtrlRead($R2)
    		$day3 = GUICtrlRead($R3)
    		$day4 = GUICtrlRead($R4)
    		$day5 = GUICtrlRead($R5)
    		$day6 = GUICtrlRead($R6)
    		$day7 = GUICtrlRead($R7)
    		$day8 = GUICtrlRead($R8)
    		$day9 = GUICtrlRead($R9)
    		$day10 = GUICtrlRead($R10)
    		$day11 = GUICtrlRead($R11)
    		$day12 = GUICtrlRead($R12)
    		$day13 = GUICtrlRead($R13)
    		$day14 = GUICtrlRead($R14)
    		$day15 = GUICtrlRead($R15)
    		$day16 = GUICtrlRead($R16)
    		$day17 = GUICtrlRead($R17)
    		$day18 = GUICtrlRead($R18)
    		$day19 = GUICtrlRead($R19)
    		$day20 = GUICtrlRead($R20)
    		$day21 = GUICtrlRead($R21)
    		$day22 = GUICtrlRead($R22)
    		$day23 = GUICtrlRead($R23)
    		$day24 = GUICtrlRead($R24)
    		$day25 = GUICtrlRead($R25)
    		$day26 = GUICtrlRead($R26)
    		$day27 = GUICtrlRead($R27)
    		$day28 = GUICtrlRead($R28)
    		$day29 = GUICtrlRead($R29)
    		$day30 = GUICtrlRead($R30)
    		$day31 = GUICtrlRead($R31)	
    
    
    		$mon1 = GUICtrlRead($R1m)
    		$mon2 = GUICtrlRead($R2m)
    		$mon3 = GUICtrlRead($R3m)
    		$mon4 = GUICtrlRead($R4m)
    		$mon5 = GUICtrlRead($R5m)
    		$mon6 = GUICtrlRead($R6m)
    		$mon7 = GUICtrlRead($R7m)
    		$mon8 = GUICtrlRead($R8m)
    		$mon9 = GUICtrlRead($R9m)
    		$mon10 = GUICtrlRead($R10m)
    		$mon11 = GUICtrlRead($R11m)
    		$mon12 = GUICtrlRead($R12m)
    
    		Select
    		Case $day1 = 1
    			$D = 1
    		Case $day2 = 1
    			$D = 2	
    		Case $day3 = 1
    			$D = 3
    		Case $day4 = 1
    			$D = 4		
    		Case $day5 = 1
    			$D = 5
    		Case $day6 = 1
    			$D = 6	
    		Case $day7 = 1
    			$D = 7
    		Case $day8 = 1
    			$D = 8	
    		Case $day9 = 1
    			$D = 9
    		Case $day10 = 1
    			$D = 10	
    		Case $day11 = 1
    			$D = 11
    		Case $day12 = 1
    			$D = 12	
    		Case $day13 = 1
    			$D = 13
    		Case $day14 = 1
    			$D = 14		
    		Case $day15 = 1
    			$D = 15
    		Case $day16 = 1
    			$D = 16	
    		Case $day17 = 1
    			$D = 17
    		Case $day18 = 1
    			$D = 18	
    		Case $day19 = 1
    			$D = 19
    		Case $day20 = 1
    			$D = 20	
    		Case $day21 = 1
    			$D = 21
    		Case $day22 = 1
    			$D = 22	
    		Case $day23 = 1
    			$D = 23
    		Case $day24 = 1
    			$D = 24		
    		Case $day25 = 1
    			$D = 25
    		Case $day26 = 1
    			$D = 26	
    		Case $day27 = 1
    			$D = 27
    		Case $day28 = 1
    			$D = 28	
    		Case $day29 = 1
    			$D = 29
    		Case $day30 = 1
    			$D = 30			
    		Case $day31 = 1
    			$D = 31
    		EndSelect
    
    		Select
    		Case $mon1 = 1
    			$mon = 1
    		Case $mon2 = 1
    			$mon = 2	
    		Case $mon3 = 1
    			$mon = 3
    		Case $mon4 = 1
    			$mon = 4
    		Case $mon5 = 1
    			$mon = 5
    		Case $mon6 = 1
    			$mon = 6
    		Case $mon7 = 1
    			$mon = 7
    		Case $mon8 = 1
    			$mon = 8
    		Case $mon9 = 1
    			$mon = 9
    		Case $mon10 = 1
    			$mon = 10
    		Case $mon11 = 1
    			$mon = 11
    		Case $mon12 = 1
    			$mon = 12
    		EndSelect
    
    
    		$year = GUICtrlRead($Inp_Year)			;Eingegebenes Jahr(JJJJ)
    		$Schalt = 0
    		If _DateIsLeapYear($year) Then			;Überprüfung Schaltjahr
    			$Schalt = 1
    			GUICtrlSetData($L_LeapYear,"Schaltjahr")
    		EndIf		
    		If $mon = 2 and $D > 28 Then			;Überprüfung/Korrektur Februardatum
    			If $Schalt = 0 Then
    				$D = 28	
    				GUICtrlSetState($R28,$gui_checked)
    			Else
    				$D = 29
    				GUICtrlSetState($R29,$gui_checked)
    			EndIf
    			GUICtrlSetData($L_MsgTag,"'Tag' für Berechnung auf "& $D & " korrigiert!")
    		EndIf
    		If ($mon = 4 Or $mon = 6 Or $mon = 9 Or $mon = 11 ) And $D > 30 Then
    			$D = 30
    			GUICtrlSetData($L_MsgTag,"'Tag' für Berechnung auf "& $D & " korrigiert!")
    			GUICtrlSetState($R30,$gui_checked)
    		EndIf		
    		$C = Int($year/100)						;Bestimmung Jahrhundert
    		$J = Mod($year, 100)					;Bestimmung Jahr
    
    		If $mon < 3 Then						;Jan und Feb gehören zum Vorjahr(hundert)
    			If $J = 0 Then						
    				$J = 99
    				$C =$C -1
    			Else
    				$J = $J - 1	
    			EndIf
    		EndIf
    
    		Select
    		Case $mon > 2							;Altrömische Zeitrechnung beginnt im März
    			$M = $mon-2
    		Case Else
    			$M = $mon+10
    		EndSelect
    
    		$W = Mod((_Floor(2.6*$M-0.2)+$D+$J+(_Floor($J/4))+(_Floor($C/4))-2*$C), 7)
    
    		; Ist das Ergebnis negativ , so addiert man 7 hinzu, so dass eine positive Zahl entsteht. 
    		; Diese Zahl entspricht dann dem Wochentag.
    		If $W < 0 Then
    			$W = $W + 7
    		EndIf
    
    		If $year > 1582 And $year < 8202 Then
    			Select
    			Case $W = 0				
    				GUICtrlSetData($L_WDayName, "Sonntag")
    			Case $W = 1
    				GUICtrlSetData($L_WDayName, "Montag")
    			Case $W = 2
    				GUICtrlSetData($L_WDayName, "Dienstag")
    			Case $W = 3
    				GUICtrlSetData($L_WDayName, "Mittwoch")
    			Case $W = 4
    				GUICtrlSetData($L_WDayName, "Donnerstag")
    			Case $W = 5
    				GUICtrlSetData($L_WDayName, "Freitag")
    			Case $W = 6
    				GUICtrlSetData($L_WDayName, "Sonnabend")
    			EndSelect
    		EndIf
    
    		GUICtrlSetData($WD_N,_WeekDay(1,1,$year))	
    		GUICtrlSetData($WD_3K,_WeekDay(6,1,$year))
    		GUICtrlSetData($WD_Val,_WeekDay(14,2,$year))
    		GUICtrlSetData($WD_Mai,_WeekDay(1,5,$year))
    		GUICtrlSetData($WD_Einheit,_WeekDay(3,10,$year))
    		GUICtrlSetData($WD_Ref,_WeekDay(31,10,$year))
    		GUICtrlSetData($WD_Aller,_WeekDay(1,11,$year))
    		GUICtrlSetData($WD_Heil,_WeekDay(24,12,$year))
    		GUICtrlSetData($WD_1W,_WeekDay(25,12,$year))
    		GUICtrlSetData($WD_2W,_WeekDay(26,12,$year))
    		GUICtrlSetData($WD_Sil,_WeekDay(31,12,$year))
    		GUICtrlSetColor($WD_N,0x0000ff)
    		GUICtrlSetColor($WD_3K,0x0000ff)
    		GUICtrlSetColor($WD_Val,0x0000ff)
    		GUICtrlSetColor($WD_Mai,0x0000ff)
    		GUICtrlSetColor($WD_Einheit,0x0000ff)
    		GUICtrlSetColor($WD_Ref,0x0000ff)
    		GUICtrlSetColor($WD_Aller,0x0000ff)
    		GUICtrlSetColor($WD_Heil,0x0000ff)
    		GUICtrlSetColor($WD_1W,0x0000ff)
    		GUICtrlSetColor($WD_2W,0x0000ff)
    		GUICtrlSetColor($WD_Sil,0x0000ff)
    
    		;Ermittlung Ostern und abhängige Feiertage (Osterformel Gauss)
    		If $year > 1582 And $year < 3000 Then		
    			$aa = Mod($year,19)
    			$bb = Mod($year,4)
    			$cc = Mod($year,7)
    			$H1 = _Div($year,100)
    			$H2 = _Div($year,400)
    			$N = 4 + $H1 - $H2
    			$MM = 15 + $H1 - $H2 - _Floor(_Div((8 * $H1 + 13),25))
    			$dd = Mod((19 * $aa + $MM),30)
    			$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N),7)
    			If $dd + $ee = 35 Then
    				$Easter = 50
    			Else
    				If $dd = 28 And $ee =6 And $aa > 10 Then
    					$Easter = 49
    				Else
    					$Easter = 22 + $dd + $ee
    				EndIf
    			EndIf
    			If $Easter < 32 Then
    				$EasterDay = $Easter
    				$EasterMonth = "03"			
    			Else
    				$EasterDay = $Easter - 31
    				$EasterMonth = "04"
    			EndIf
    			If $EasterDay < 10 Then
    				$EasterDay = "0" & $Easterday
    			EndIf
    
    			If $year < 1900 Then			;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
    				$RestJahr = Mod($year,100)
    				If $Schalt = 1 Then				
    					if $RestJahr < 10 Then
    						$RestJahr = "0" & $RestJahr
    					EndIf
    					$Tempyear = 20 & $RestJahr
    				Else				
    					if $RestJahr < 10 Then
    						$RestJahr = "0" & $RestJahr
    					EndIf		
    					$Tempyear = 19 & $RestJahr
    				EndIf
    				$EasterDate = $Tempyear&"/"&$EasterMonth&"/"&$EasterDay
    			Else
    				$EasterDate = $year&"/"&$EasterMonth&"/"&$EasterDay
    			EndIf		
    			$WFastDate = _DateAdd( 'd',-52,$EasterDate)
    			$RosDat = _DateAdd( 'd',-48,$EasterDate)
    			$FastDat = _DateAdd( 'd',-47,$EasterDate)		
    			$AschDat = _DateAdd( 'd',-46,$EasterDate)
    			$GrDoDat = _DateAdd( 'd',-3,$EasterDate)
    			$KarDat = _DateAdd( 'd',-2,$EasterDate)
    			$OSaDat = _DateAdd( 'd',-1,$EasterDate)
    			$OSoDat = $EasterDate
    			$OMoDat = _DateAdd( 'd',1,$EasterDate)
    			$HiFaDat = _DateAdd( 'd',39,$EasterDate)
    			$PfSoDat = _DateAdd( 'd',49,$EasterDate)
    			$PfMoDat = _DateAdd( 'd',50,$EasterDate)
    			$FroDat = _DateAdd( 'd',60,$EasterDate)
    
    			;Umstellen auf TT.MM.JJJJ
    			$WFastDate = StringMid($WFastDate,9)&"."&StringMid($WFastDate,6,2)&"."&$year
    			$RosDat = StringMid($RosDat,9)&"."&StringMid($RosDat,6,2)&"."&$year
    			$FastDat = StringMid($FastDat,9)&"."&StringMid($FastDat,6,2)&"."&$year		
    			$AschDat = StringMid($AschDat,9)&"."&StringMid($AschDat,6,2)&"."&$year
    			$GrDoDat = StringMid($GrDoDat,9)&"."&StringMid($GrDoDat,6,2)&"."&$year
    			$KarDat = StringMid($KarDat,9)&"."&StringMid($KarDat,6,2)&"."&$year
    			$OSaDat = StringMid($OSaDat,9)&"."&StringMid($OSaDat,6,2)&"."&$year		
    			$OSoDat = StringMid($OSoDat,9)&"."&StringMid($OSoDat,6,2)&"."&$year
    			$OMoDat = StringMid($OMoDat,9)&"."&StringMid($OMoDat,6,2)&"."&$year
    			$HiFaDat = StringMid($HiFaDat,9)&"."&StringMid($HiFaDat,6,2)&"."&$year
    			$PfSoDat = StringMid($PfSoDat,9)&"."&StringMid($PfSoDat,6,2)&"."&$year
    			$PfMoDat = StringMid($PfMoDat,9)&"."&StringMid($PfMoDat,6,2)&"."&$year
    			$FroDat = StringMid($FroDat,9)&"."&StringMid($FroDat,6,2)&"."&$year
    
    			;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
    
    			;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
    			;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
    			For $maitag = 8 To 14
    				If _Weekday($maitag,5,$year) = "Sonntag" Then
    					If $maitag < 10 Then
    						$maitag = "0" & $maitag
    					EndIf					
    					$MutterDat = $maitag & "." & "05." & $year
    					If $MutterDat = $PfSoDat Then
    						$MutterDat = _DateAdd( 'd', -7, $year&"/05/"&$maitag)
    						$MutterDat = _DateToNorm($MutterDat)
    					EndIf
    					ExitLoop
    				EndIf
    			Next			
    
    
    			;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
    			For $oktobertag = 1 To 7
    				If _Weekday($oktobertag,10,$year) = "Sonntag" Then
    					$oktobertag = "0" & $oktobertag
    					$ErnteDat = $oktobertag & "." & "10." & $year
    					ExitLoop
    				EndIf
    			Next
    
    
    			;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
    			For $deztag = 18 To 24
    				If _Weekday($deztag,12,$year) = "Sonntag" Then
    					$4AdvDat = $year & "/12/" & $deztag
    					$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
    					$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
    					$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
    					$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
    					$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
    					ExitLoop
    				EndIf
    			Next
    			$4AdvDat = StringMid(_DateToNorm($4AdvDat),1,6)
    			$3AdvDat = StringMid(_DateToNorm($3AdvDat),1,6)
    			$2AdvDat = StringMid(_DateToNorm($2AdvDat),1,6)
    			$1AdvDat = StringMid(_DateToNorm($1AdvDat),1,6)
    			$TotSoDat = _DateToNorm($TotSoDat)
    			$BuBDat = _DateToNorm($BuBDat)
    
    
    			GUICtrlSetData($L_WFastDate, $WFastDate)
    			GUICtrlSetData($L_RosDat, $RosDat)
    			GUICtrlSetData($L_FastDat, $FastDat)
    			GUICtrlSetData($L_AschDat, $AschDat)
    			GUICtrlSetData($L_GrDoDat, $GrDoDat)
    			GUICtrlSetData($L_KarDat, $KarDat)
    			GUICtrlSetData($L_OSaDat, $OSaDat)
    			GUICtrlSetData($L_OSoDat, $OSoDat)
    			GUICtrlSetData($L_OMoDat, $OMoDat)
    			GUICtrlSetData($L_HiFaDat, $HiFaDat)
    			GUICtrlSetData($L_MutterDat,$MutterDat)
    			GUICtrlSetData($L_PfSoDat, $PfSoDat)
    			GUICtrlSetData($L_PfMoDat, $PfMoDat)
    			GUICtrlSetData($L_FroDat, $FroDat)
    			GUICtrlSetData($L_ErnteDat, $ErnteDat)
    			GUICtrlSetData($L_TotSoDat, $TotSoDat)
    			GUICtrlSetData($L_BuBDat, $BuBDat)
    			GUICtrlSetData($L_1AdvDat,$1AdvDat)
    			GUICtrlSetData($L_2AdvDat,$2AdvDat)
    			GUICtrlSetData($L_3AdvDat,$3AdvDat)
    			GUICtrlSetData($L_4AdvDat,$4AdvDat)			
    		EndIf
    
    	EndIf
    	Select
    	Case $msg = $GUI_EVENT_CLOSE
    		ExitLoop
    	Case $msg = $But_Ende
    		ExitLoop	
    	EndSelect
    WEnd
    Exit
    
    
    ;=====================================================================================================
    ;	Ende Code																						 ;
    ;=====================================================================================================
    Alles anzeigen

    Und hier noch die reine Feiertagsfunktion. Evtl. kann man hinter dem Feiertagsnamen das Bundeslandkürzel anhängen, sofern es kein allgemeingültiger Feiertag ist.

    Spoiler anzeigen
    C
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;	Funktion _Feiertage($Jahr)
    ;
    ;	gibt die Feiertage des übergebenen Jahres
    ;	als sortiertes Array[TT.MM.JJJJ \ Feiertag] zurück
    ;	(Trennzeichen veränderbar über Variable: $Delimiter)
    ;
    ;	Autor	BugFix (bug_fix@web.de)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    
    #include <math.au3>
    #include <Date.au3>
    #include <Array.au3>
    
    
    Func _Feiertage($year)
    	Dim $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp, $Delimiter = "\"
    	Dim $HDays[32]
    
    ;fixe Feiertage
    	$HDays[0] = $year & "/01/01" & $Delimiter & "Neujahr"
    	$HDays[1] = $year & "/01/06" & $Delimiter & "Heilige Drei Könige"
    	$HDays[2] = $year & "/02/14" & $Delimiter & "Valentinstag"
    	$HDays[3] = $year & "/05/01" & $Delimiter & "Maifeiertag"
    	$HDays[4] = $year & "/10/03" & $Delimiter & "Tag der Deutschen Einheit"
    	$HDays[5] = $year & "/10/31" & $Delimiter & "Reformationstag"
    	$HDays[6] = $year & "/11/01" & $Delimiter & "Allerheiligen"
    	$HDays[7] = $year & "/12/24" & $Delimiter & "Heiligabend"
    	$HDays[8] = $year & "/12/25" & $Delimiter & "1. Weihnachtsfeiertag"
    	$HDays[9] = $year & "/12/26" & $Delimiter & "2. Weihnachtsfeiertag"
    	$HDays[10] = $year & "/12/31" & $Delimiter & "Silvester"
    
    
    ;variable Feiertage
    	$aa = Mod($year, 19)
    	$bb = Mod($year, 4)
    	$cc = Mod($year, 7)
    	$H1 = Int($year / 100)
    	$H2 = Int($year / 400)
    	$N = 4 + $H1 - $H2
    	$MM = 15 + $H1 - $H2 - _Floor (Int((8 * $H1 + 13) / 25))
    	$dd = Mod((19 * $aa + $MM), 30)
    	$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N), 7)
    	If $dd + $ee = 35 Then
    		$Easter = 50
    	Else
    		If $dd = 28 And $ee = 6 And $aa > 10 Then
    			$Easter = 49
    		Else
    			$Easter = 22 + $dd + $ee
    		EndIf
    	EndIf
    	If $Easter < 32 Then
    		$EasterDay = $Easter
    		$EasterMonth = "03"
    	Else
    		$EasterDay = $Easter - 31
    		$EasterMonth = "04"
    	EndIf
    	If $EasterDay < 10 Then
    		$EasterDay = "0" & $EasterDay
    	EndIf
    
    	If $year < 1900 Then ;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
    		$RestJahr = Mod($year, 100)
    		If _DateIsLeapYear($year) Then
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 20 & $RestJahr
    		Else
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 19 & $RestJahr
    		EndIf
    		$EasterDate = $Tempyear & "/" & $EasterMonth & "/" & $EasterDay
    	Else
    		$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
    	EndIf
    	$WFastDate = _DateAdd( 'd', -52, $EasterDate)
    	$RosDat = _DateAdd( 'd', -48, $EasterDate)
    	$FastDat = _DateAdd( 'd', -47, $EasterDate)
    	$AschDat = _DateAdd( 'd', -46, $EasterDate)
    	$GrDoDat = _DateAdd( 'd', -3, $EasterDate)
    	$KarDat = _DateAdd( 'd', -2, $EasterDate)
    	$OSaDat = _DateAdd( 'd', -1, $EasterDate)
    	$OSoDat = $EasterDate
    	$OMoDat = _DateAdd( 'd', 1, $EasterDate)
    	$HiFaDat = _DateAdd( 'd', 39, $EasterDate)
    	$PfSoDat = _DateAdd( 'd', 49, $EasterDate)
    	$PfMoDat = _DateAdd( 'd', 50, $EasterDate)
    	$FroDat = _DateAdd( 'd', 60, $EasterDate)
    
    	;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
    	;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
    	;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
    	For $maitag = 8 To 14
    		If _DateToDayOfWeek($year, 5, $maitag) = 1 Then
    			If $maitag < 10 Then
    				$maitag = "0" & $maitag
    			EndIf
    			$MutterDat = $year & "/05/" & $maitag
    			If $MutterDat = $PfSoDat Then
    				$MutterDat = _DateAdd( 'd', -7, $year & "/05/" & $maitag)
    			EndIf
    			ExitLoop
    		EndIf
    	Next
    
    	;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
    	For $oktobertag = 1 To 7
    		If _DateToDayOfWeek($year, 10, $oktobertag) = 1 Then
    			$oktobertag = "0" & $oktobertag
    			$ErnteDat = $year & "/10/" & $oktobertag
    			ExitLoop
    		EndIf
    	Next
    
    	;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
    	For $deztag = 18 To 24
    		If _DateToDayOfWeek($year, 12, $deztag) = 1 Then
    			$4AdvDat = $year & "/12/" & $deztag
    			$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
    			$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
    			$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
    			$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
    			$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
    			ExitLoop
    		EndIf
    	Next
    
    	$HDays[11] = $WFastDate & $Delimiter & "Weiberfastnacht"
    	$HDays[12] = $RosDat & $Delimiter & "Rosenmontag"
    	$HDays[13] = $FastDat & $Delimiter & "Fastnacht"
    	$HDays[14] = $AschDat & $Delimiter & "Aschermittwoch"
    	$HDays[15] = $GrDoDat & $Delimiter & "Gründonnerstag"
    	$HDays[16] = $KarDat & $Delimiter & "Karfreitag"
    	$HDays[17] = $OSaDat & $Delimiter & "Ostersamstag"
    	$HDays[18] = $OSoDat & $Delimiter & "Ostersonntag"
    	$HDays[19] = $OMoDat & $Delimiter & "Ostermontag"
    	$HDays[20] = $HiFaDat & $Delimiter & "Christi Himmelfahrt"
    	$HDays[21] = $PfSoDat & $Delimiter & "Pfingstsonntag"
    	$HDays[22] = $PfMoDat & $Delimiter & "Pfingstmontag"
    	$HDays[23] = $MutterDat & $Delimiter & "Muttertag"
    	$HDays[24] = $FroDat & $Delimiter & "Fronleichnam"
    	$HDays[25] = $ErnteDat & $Delimiter & "Erntedankfest"
    	$HDays[26] = $BuBDat & $Delimiter & "Buß- und Bettag"
    	$HDays[27] = $TotSoDat & $Delimiter & "Totensonntag"
    	$HDays[28] = $1AdvDat & $Delimiter & "1. Advent"
    	$HDays[29] = $2AdvDat & $Delimiter & "2. Advent"
    	$HDays[30] = $3AdvDat & $Delimiter & "3. Advent"
    	$HDays[31] = $4AdvDat & $Delimiter & "4. Advent"
    	_ArraySort($HDays)
    ;Datum konvertieren zu TT.MM.JJJJ
    	For $i = 0 To 31
    		$tmp = StringSplit($HDays[$i], $Delimiter)
    		$HDays[$i] = StringMid($tmp[1], 9) & "." & StringMid($tmp[1], 6, 2) & "." & StringMid($tmp[1], 1, 4) & $Delimiter & $tmp[2]
    	Next
    	Return $HDays
    EndFunc   ;==>_Feiertage
    Alles anzeigen


    Edit 18.04.2009 Die überarbeitete Version findet ihr in Post 1.

    Dateien

    Wochentag_Feiertag.au3 27,92 kB – 1.008 Downloads
  • Programmverhalten bei _IsPressed()

    • BugFix
    • 3. Juli 2006 um 21:42

    Danke Pee,
    war ja wieder mal 'ne superschnelle Antwort.

    :klatschen: RESPEKT :klatschen:

  • Programmverhalten bei _IsPressed()

    • BugFix
    • 3. Juli 2006 um 21:34

    Die Beta-Hilfe ist leider etwas kurz und ich bin mir da nicht sicher:
    Stoppt die Programmausführung bei _IsPressed(), bis die angegebene Taste gedrückt wird ?
    Ich benötige genau diese Konstellation, da der User das Ende seiner Interaktion durch Tastendruck angeben muß und danach das Script weiterlaufen soll.
    Hier der betreffende Teil des Codes (siehe Zeile 14):

    Spoiler anzeigen
    Code
    Func _report()
    	If $state1 = 8 Then
    		ControlClick($main_wdw1, "", "Button9") ; Button LabManager
    	EndIf
    	If $state2 = 8 Then
    		ControlClick($main_wdw2, "", "Button9") ; Button LabManager
    	EndIf
    	ControlClick("LabManager", "", "OFormSub16") ; CUSTOM SCORE SET REPORTS
    	;ControlClick("LabManager","", "OFormSub22") ; REPORT SELECTION      ?? nötig ??
    	ControlCommand("LabManager", "", "OFormSub22", "SelectString", $report) ; REPORT SELECTION
    	Send("{ENTER}")
    	ControlClick("LabManager", "", "OTabControl3") ; WECHSELN ZU PATIENTENAUSWAHL
    	MsgBox(4096, "Hinweis", "Bitte wählen Sie den Patienten aus" & @LF & "Bestätigen Sie die Auswahl mit Taste <F9> !")
    	If _IsPressed("78") Then ; User hat Auswahl beendet und <F9> gedrückt
    		$lbl_name = ControlCommand("LabManager", "", "OKttbx2", "GetCurrentSelection", "") ; ausgewählten Patienten auslesen
    		$lbl_name = StringReplace($lbl_name, " ", "")
    		$lbl_name = StringReplace($lbl_name, ",", "_")
    		$lbl_date = ControlCommand("LabManager", "", "OKttbx3", "GetCurrentSelection", "") ; ausgewähltes Datum auslesen
    		$lbl_date = _MultiDateToNorm($lbl_date, 1) ; in String wandeln (JJJJ-MM-TT)
    		ControlClick("LabManager", "", "OFormSub27") ; Registerkarte REPORTS
    		ControlClick("LabManager", "", "OFormSub13") ; Schaltfläche PDF
    		ControlCommand("Create a PDF File", "", "ComboBox1", "SelectString", $pdf_target) ; Speicherort auswählen
    		ControlCommand("Create a PDF File", "", "Edit1", "AddString", $lbl_name & "_" & $lbl_date) ; Dateinamen eintragen
    		ControlClick("Create a PDF File", "", "Button2") ; Button Speichern
    	EndIf
    EndFunc   ;==>_report
    Alles anzeigen
  • Problem mit Controls

    • BugFix
    • 1. Juli 2006 um 17:52

    Naja, leider nix mit Controls :(
    Da mir die Mausbewegungen zu langsam sind (oder kann man die Geschwindigkeit irgendwo definieren ??) konnte ich das ganze auf einen Mausklick reduzieren und den Rest mit "send()" realisieren.
    So ist es jetzt ganz passabel und auf jeden Fall schneller als wenn ich per Hand ein neues Spiel starte.

    Spoiler anzeigen
    Code
    #NoTrayIcon
    $aktiv = 0
    $carom_path = "H:\Program Files\Carom3D\carom.exe"
    HotKeySet("!ä", "_PracticeAgain")
    While 1
    	$state = WinGetState("Carom3D","")
    	Select
    		Case $aktiv = 0
    			Run($carom_path)
    			WinWaitActive("Carom3D")
    			$aktiv = 1
    			_PracticeAgain()
    		Case $state = 0 And $aktiv = 1
    			ExitLoop
    	EndSelect
    WEnd
    Exit
    
    
    Func _PracticeAgain()
    	MouseClick("left",540,180)
    	Send("E")
    	Send("{TAB}")
    	Send("K")
    	Send("{ENTER}")
    EndFunc
    Alles anzeigen
  • "run()" läuft nicht auf Notebook

    • BugFix
    • 1. Juli 2006 um 17:03

    Ja Danke, das wars.
    Da war die Hilfedatei etwas fehlleitend: run("filename"..) - richtig wäre hier also "Dateipfad".

  • "run()" läuft nicht auf Notebook

    • BugFix
    • 1. Juli 2006 um 16:47

    Hallo,
    schon komisch - hab ein Script vom PC aufs Notebook kopiert und dieses verweigert das Ausführen des Befehls "run()".
    Hab probiert, ob es an der Autoit-Installation liegt (deinstalliert und neu aufgespielt). Adminrechte habe ich auch. Also mir ist das unerklärlich. Funktioniert mit keiner Datei, als Beispiel hab ich hier mal Trillian verwendet.

    Code
    run("trillian.exe", "c:\Programme\Trillian\")

    führt zur Fehlermeldung:

    Zitat

    >Running: (3.1.1.0):C:\Programme\AutoIt3\autoit3.exe "C:\Dokumente und Einstellungen\Standard\Desktop\AU3-Scripte\
    test_run.au3"
    C:\Dokumente und Einstellungen\Standard\Desktop\AU3-Scripte\test_run.au3 (1) : ==> Unable to execute the external program.:
    run("trillian.exe", "c:\Programme\Trillian\")
    Das System kann die angegebene Datei nicht finden.


    Selbstredend ist trillian.exe an dem angegebenen Pfad vorhanden und läßt sich händisch prroblemlos ausführen.
    Hat irgendwer eine Erklärung dafür oder einen Vorschlag, wie ich das Problem weiter eingrenzen kann?

  • PDF einbinden

    • BugFix
    • 1. Juli 2006 um 12:08

    Ich denke, der einfachste Weg ist, in deine GUI ein Fenster einzubetten, indem du einen externen PDF-Reader aufrufst. Aber nicht Adobe, viel zu groß und zu träge. Ich empfehle dir dafür Foxit PDF Reader. Klein, flink und braucht nicht installiert zu werden.

    Edit:
    Foxit läßt sich per Kommandozeile mit Optionen aufrufen, habs nur kurz überflogen - hier findest du näheres dazu.

    Edit 2: ;)
    Schau mal, vielleicht hilft dir das hier auch weiter.

  • Problem mit Controls

    • BugFix
    • 29. Juni 2006 um 16:45

    Eddy_Erpel & @ bernd670

    Danke für eure Tipps. Hab alles probiert. Aber leider ohne Erfolg.
    Ich kapier nicht, wieso das Info-Tool ID's ausliest, auf diese aber nicht zugegriffen werden kann.
    Und das nervt mich am meisten, dass ich nicht weiß warum es nicht geht.

  • Problem mit Controls

    • BugFix
    • 29. Juni 2006 um 14:11

    Hallo,

    diejenigen von euch, die auch Carom spielen, kennen sicher das Problem:
    Beim Spiel im Practice-Mode muß nach Spielende wieder der Spieltyp und der Raum ausgewählt werden. Voreinstellungen sind nicht möglich.
    Das wollte ich nun mittels eines Scripts automatisieren. Aber irgendwas mach ich wohl falsch :(. Das Script reagiert gar nicht auf die Control-Commands.
    Ich hab es jetzt mit Mausklicks realisiert (und die Controls auskommentiert), würde es aber lieber mit den Controls machen.

    Hier der Code:

    Spoiler anzeigen
    Code
    #include <GUIConstants.au3>
    
    
    $Form1 = GUICreate("carom Start", 226, 159, (@DesktopWidth-226)/2, (@DesktopHeight-159)/2 )
    $start = GUICtrlCreateButton("Start Carom3D", 40, 32, 145, 33)
    $escape = GUICtrlCreateButton("Abbrechen", 40, 88, 145, 33)
    GUISetState(@SW_SHOW)
    
    
    HotKeySet("!ä", "_CaromStart") ; "ägain" LOL 
    $aktiv = 0
    While 1
    	$msg = GuiGetMsg()
    	$state = WinGetState("Carom3D", "")
    	Select
    	Case $msg = $GUI_EVENT_CLOSE Or $msg = $escape Or ($state = 0 And $aktiv > 0)
    		ExitLoop
    	Case $msg = $start ; Practice Mode
    		GUISetState(@SW_HIDE, $Form1)
    		Run("carom.exe", "H:\Program Files\Carom3D\")
    		WinWaitActive("Carom3D")
    		$aktiv = 1
    		_CaromStart()
    	EndSelect
    WEnd
    Exit
    
    
    Func _CaromStart()
    ;>>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    ;Title:	Carom3D
    ;Class:	Carom3D
    
    ;BUTTON: PRACTICE
    ;>>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    ;Control ID:	1026
    ;ClassNameNN:	Button27
    	;ControlClick("Carom3D","",1026) ; Button PRACTICE
    	MouseClick("left",535,180)
    
    ;AUSWAHLFENSTER PRACTICE
    ;>>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    ;Title:	
    ;Class:	#32770
    ;COMBO-BOX: GAME-TYP
    ;>>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    ;Control ID:	1013
    ;ClassNameNN:	ComboBox1
    ;>>>>>>>>>>> Visible Window Text <<<<<<<<<<<
    ;Eight Ball
    	;ControlClick("","",1013) ; Combo-Box Gametyp  ?? Ist das nötig, da ControlCommand(.."SelectString"..) folgt ??
    	MouseClick("left",360,275)
    	;ControlCommand("","",1013,"SelectString",'Eight Ball') ; Auswahl Spiel
    	MouseClick("left",365,325)
    
    ;COMBO-BOX: ROOM-TYP
    ;>>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    ;Control ID:	1014
    ;ClassNameNN:	ComboBox2
    ;>>>>>>>>>>> Visible Window Text <<<<<<<<<<<
    ;Korean Room
    	;ControlClick("","",1014) ; Combo-Box Raumtyp  ?? Ist das nötig, da ControlCommand(.."SelectString"..) folgt ??
    	MouseClick("left",360,325)
    	;ControlCommand("","",1014,"SelectString",'Korean Room') ; Auswahl Raum
    	MouseClick("left",360,385)
    
    
    ;BUTTON: OK
    ;>>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    ;Control ID:	1
    ;ClassNameNN:	Button1
    ;Text:		OK
    	;ControlClick("","",1) ; OK-Button
    	MouseClick("left",310,370)
    EndFunc
    Alles anzeigen


    Die Ergebnisse von AutoitWindowInfo habe ich den jeweiligen Controls vorangestellt.

  • Windowsfenster auslesen

    • BugFix
    • 28. Juni 2006 um 20:33
    Zitat

    AutoIt Window Info ist gut, geht aber nicht weil autoit installiert sein muss sonst gehts ja nicht.

    Muß es nicht. Ich hab es immer auf 'nem USB-Stick dabei und es funktioniert tadellos.

  • Geschlossen: AutoIt-Kalender

    • BugFix
    • 12. Juni 2006 um 08:09

    Hi,
    gestern abend im Hotel hatte ich eh nix besseres zu tun, also hab ich mir noch mal die Feiertagsfunktion zu Gemüte geführt.
    Ein 2-dimensionales Array muß ja nicht sein. Hab das ganze jetzt in einem eindimensionalen, sortierten Array [Datum $Delimiter Feiertag].
    Hab auch noch einiges gekürzt.
    Hier der Code:

    Spoiler anzeigen
    C
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;	Funktion _Feiertage($Jahr)
    ;
    ;	gibt die Feiertage des übergebenen Jahres
    ;	als sortiertes Array[TT.MM.JJJJ \ Feiertag] zurück
    ;	(Trennzeichen veränderbar über Variable: $Delimiter)
    ;
    ;	Autor	BugFix (bug_fix@web.de)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    
    #include <math.au3>
    #include <Date.au3>
    #include <Array.au3>
    
    
    Func _Feiertage($year)
    	Dim $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp, $Delimiter = "\"
    	Dim $HDays[32]
    
    ;fixe Feiertage
    	$HDays[0] = $year & "/01/01" & $Delimiter & "Neujahr"
    	$HDays[1] = $year & "/01/06" & $Delimiter & "Heilige Drei Könige"
    	$HDays[2] = $year & "/02/14" & $Delimiter & "Valentinstag"
    	$HDays[3] = $year & "/05/01" & $Delimiter & "Maifeiertag"
    	$HDays[4] = $year & "/10/03" & $Delimiter & "Tag der Deutschen Einheit"
    	$HDays[5] = $year & "/10/31" & $Delimiter & "Reformationstag"
    	$HDays[6] = $year & "/11/01" & $Delimiter & "Allerheiligen"
    	$HDays[7] = $year & "/12/24" & $Delimiter & "Heiligabend"
    	$HDays[8] = $year & "/12/25" & $Delimiter & "1. Weihnachtsfeiertag"
    	$HDays[9] = $year & "/12/26" & $Delimiter & "2. Weihnachtsfeiertag"
    	$HDays[10] = $year & "/12/31" & $Delimiter & "Silvester"
    
    
    ;variable Feiertage
    	$aa = Mod($year, 19)
    	$bb = Mod($year, 4)
    	$cc = Mod($year, 7)
    	$H1 = Int($year / 100)
    	$H2 = Int($year / 400)
    	$N = 4 + $H1 - $H2
    	$MM = 15 + $H1 - $H2 - _Floor (Int((8 * $H1 + 13) / 25))
    	$dd = Mod((19 * $aa + $MM), 30)
    	$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N), 7)
    	If $dd + $ee = 35 Then
    		$Easter = 50
    	Else
    		If $dd = 28 And $ee = 6 And $aa > 10 Then
    			$Easter = 49
    		Else
    			$Easter = 22 + $dd + $ee
    		EndIf
    	EndIf
    	If $Easter < 32 Then
    		$EasterDay = $Easter
    		$EasterMonth = "03"
    	Else
    		$EasterDay = $Easter - 31
    		$EasterMonth = "04"
    	EndIf
    	If $EasterDay < 10 Then
    		$EasterDay = "0" & $EasterDay
    	EndIf
    
    	If $year < 1900 Then ;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
    		$RestJahr = Mod($year, 100)
    		If _DateIsLeapYear($year) Then
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 20 & $RestJahr
    		Else
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 19 & $RestJahr
    		EndIf
    		$EasterDate = $Tempyear & "/" & $EasterMonth & "/" & $EasterDay
    	Else
    		$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
    	EndIf
    	$WFastDate = _DateAdd( 'd', -52, $EasterDate)
    	$RosDat = _DateAdd( 'd', -48, $EasterDate)
    	$FastDat = _DateAdd( 'd', -47, $EasterDate)
    	$AschDat = _DateAdd( 'd', -46, $EasterDate)
    	$GrDoDat = _DateAdd( 'd', -3, $EasterDate)
    	$KarDat = _DateAdd( 'd', -2, $EasterDate)
    	$OSaDat = _DateAdd( 'd', -1, $EasterDate)
    	$OSoDat = $EasterDate
    	$OMoDat = _DateAdd( 'd', 1, $EasterDate)
    	$HiFaDat = _DateAdd( 'd', 39, $EasterDate)
    	$PfSoDat = _DateAdd( 'd', 49, $EasterDate)
    	$PfMoDat = _DateAdd( 'd', 50, $EasterDate)
    	$FroDat = _DateAdd( 'd', 60, $EasterDate)
    
    	;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
    	;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
    	;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
    	For $maitag = 8 To 14
    		If _DateToDayOfWeek($year, 5, $maitag) = 1 Then
    			If $maitag < 10 Then
    				$maitag = "0" & $maitag
    			EndIf
    			$MutterDat = $year & "/05/" & $maitag
    			If $MutterDat = $PfSoDat Then
    				$MutterDat = _DateAdd( 'd', -7, $year & "/05/" & $maitag)
    			EndIf
    			ExitLoop
    		EndIf
    	Next
    
    	;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
    	For $oktobertag = 1 To 7
    		If _DateToDayOfWeek($year, 10, $oktobertag) = 1 Then
    			$oktobertag = "0" & $oktobertag
    			$ErnteDat = $year & "/10/" & $oktobertag
    			ExitLoop
    		EndIf
    	Next
    
    	;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
    	For $deztag = 18 To 24
    		If _DateToDayOfWeek($year, 12, $deztag) = 1 Then
    			$4AdvDat = $year & "/12/" & $deztag
    			$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
    			$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
    			$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
    			$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
    			$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
    			ExitLoop
    		EndIf
    	Next
    
    	$HDays[11] = $WFastDate & $Delimiter & "Weiberfastnacht"
    	$HDays[12] = $RosDat & $Delimiter & "Rosenmontag"
    	$HDays[13] = $FastDat & $Delimiter & "Fastnacht"
    	$HDays[14] = $AschDat & $Delimiter & "Aschermittwoch"
    	$HDays[15] = $GrDoDat & $Delimiter & "Gründonnerstag"
    	$HDays[16] = $KarDat & $Delimiter & "Karfreitag"
    	$HDays[17] = $OSaDat & $Delimiter & "Ostersamstag"
    	$HDays[18] = $OSoDat & $Delimiter & "Ostersonntag"
    	$HDays[19] = $OMoDat & $Delimiter & "Ostermontag"
    	$HDays[20] = $HiFaDat & $Delimiter & "Christi Himmelfahrt"
    	$HDays[21] = $PfSoDat & $Delimiter & "Pfingstsonntag"
    	$HDays[22] = $PfMoDat & $Delimiter & "Pfingstmontag"
    	$HDays[23] = $MutterDat & $Delimiter & "Muttertag"
    	$HDays[24] = $FroDat & $Delimiter & "Fronleichnam"
    	$HDays[25] = $ErnteDat & $Delimiter & "Erntedankfest"
    	$HDays[26] = $BuBDat & $Delimiter & "Buß- und Bettag"
    	$HDays[27] = $TotSoDat & $Delimiter & "Totensonntag"
    	$HDays[28] = $1AdvDat & $Delimiter & "1. Advent"
    	$HDays[29] = $2AdvDat & $Delimiter & "2. Advent"
    	$HDays[30] = $3AdvDat & $Delimiter & "3. Advent"
    	$HDays[31] = $4AdvDat & $Delimiter & "4. Advent"
    	_ArraySort($HDays)
    ;Datum konvertieren zu TT.MM.JJJJ
    	For $i = 0 To 31
    		$tmp = StringSplit($HDays[$i], $Delimiter)
    		$HDays[$i] = StringMid($tmp[1], 9) & "." & StringMid($tmp[1], 6, 2) & "." & StringMid($tmp[1], 1, 4) & $Delimiter & $tmp[2]
    	Next
    	Return $HDays
    EndFunc   ;==>_Feiertage
    Alles anzeigen
  • Geschlossen: AutoIt-Kalender

    • BugFix
    • 11. Juni 2006 um 14:10

    Hi,
    vielleicht kann man ja die Feiertage mit einbringen. Hab aus meinem Script mal 'ne Funktion gebastelt, die die Feiertage als Array[Datum][Feiertag] zurückgibt.
    Bekomms nur nicht sortiert. :(
    Aber vielleicht bekommt ihrs ja hin.
    Meld mich erstmal für 10 Tag ab - Dienstfahrt.

    Spoiler anzeigen
    C
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;	Funktion _Feiertage($Jahr)
    ;
    ;	gibt die Feiertage des übergebenen Jahres als Array[Datum][Feiertag] zurück
    ;
    ;	Autor	BugFix (bug_fix@web.de)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    
    #include <math.au3>
    #include <Date.au3>
    
    
    Func _Feiertage($year)
    	Dim $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp
    	Dim $HDays[32][2]
    ;fixe Feiertage
    	$HDays[0][0] = "01.01." & $year
    	$HDays[0][1] = "Neujahr"
    	$HDays[1][0] = "06.01." & $year
    	$HDays[1][1] = "Heilige Drei Könige"
    	$HDays[2][0] = "14.02." & $year
    	$HDays[2][1] = "Valentinstag"
    	$HDays[3][0] = "01.05." & $year
    	$HDays[3][1] = "Maifeiertag"
    	$HDays[4][0] = "03.10." & $year
    	$HDays[4][1] = "Tag der Deutschen Einheit"
    	$HDays[5][0] = "31.10." & $year
    	$HDays[5][1] = "Reformationstag"
    	$HDays[6][0] = "01.11." & $year
    	$HDays[6][1] = "Allerheiligen"
    	$HDays[7][0] = "24.12." & $year
    	$HDays[7][1] = "Heiligabend"
    	$HDays[8][0] = "25.12." & $year
    	$HDays[8][1] = "1. Weihnachtsfeiertag"
    	$HDays[9][0] = "26.12." & $year
    	$HDays[9][1] = "2. Weihnachtsfeiertag"
    	$HDays[10][0] = "31.12." & $year
    	$HDays[10][1] = "Silvester"
    ;variable Feiertage
    	$aa = Mod($year, 19)
    	$bb = Mod($year, 4)
    	$cc = Mod($year, 7)
    	$H1 = Int($year / 100)
    	$H2 = Int($year / 400)
    	$N = 4 + $H1 - $H2
    	$MM = 15 + $H1 - $H2 - _Floor (Int((8 * $H1 + 13) / 25))
    	$dd = Mod((19 * $aa + $MM), 30)
    	$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N), 7)
    	If $dd + $ee = 35 Then
    		$Easter = 50
    	Else
    		If $dd = 28 And $ee = 6 And $aa > 10 Then
    			$Easter = 49
    		Else
    			$Easter = 22 + $dd + $ee
    		EndIf
    	EndIf
    	If $Easter < 32 Then
    		$EasterDay = $Easter
    		$EasterMonth = "03"
    	Else
    		$EasterDay = $Easter - 31
    		$EasterMonth = "04"
    	EndIf
    	If $EasterDay < 10 Then
    		$EasterDay = "0" & $EasterDay
    	EndIf
    
    	If $year < 1900 Then ;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
    		$RestJahr = Mod($year, 100)
    		If _DateIsLeapYear($year) Then
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 20 & $RestJahr
    		Else
    			If $RestJahr < 10 Then
    				$RestJahr = "0" & $RestJahr
    			EndIf
    			$Tempyear = 19 & $RestJahr
    		EndIf
    		$EasterDate = $Tempyear & "/" & $EasterMonth & "/" & $EasterDay
    	Else
    		$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
    	EndIf
    	$WFastDate = _DateAdd( 'd', -52, $EasterDate)
    	$RosDat = _DateAdd( 'd', -48, $EasterDate)
    	$FastDat = _DateAdd( 'd', -47, $EasterDate)
    	$AschDat = _DateAdd( 'd', -46, $EasterDate)
    	$GrDoDat = _DateAdd( 'd', -3, $EasterDate)
    	$KarDat = _DateAdd( 'd', -2, $EasterDate)
    	$OSaDat = _DateAdd( 'd', -1, $EasterDate)
    	$OSoDat = $EasterDate
    	$OMoDat = _DateAdd( 'd', 1, $EasterDate)
    	$HiFaDat = _DateAdd( 'd', 39, $EasterDate)
    	$PfSoDat = _DateAdd( 'd', 49, $EasterDate)
    	$PfMoDat = _DateAdd( 'd', 50, $EasterDate)
    	$FroDat = _DateAdd( 'd', 60, $EasterDate)
    
    	;Umstellen auf TT.MM.JJJJ
    	$WFastDate = StringMid($WFastDate, 9) & "." & StringMid($WFastDate, 6, 2) & "." & $year
    	$RosDat = StringMid($RosDat, 9) & "." & StringMid($RosDat, 6, 2) & "." & $year
    	$FastDat = StringMid($FastDat, 9) & "." & StringMid($FastDat, 6, 2) & "." & $year
    	$AschDat = StringMid($AschDat, 9) & "." & StringMid($AschDat, 6, 2) & "." & $year
    	$GrDoDat = StringMid($GrDoDat, 9) & "." & StringMid($GrDoDat, 6, 2) & "." & $year
    	$KarDat = StringMid($KarDat, 9) & "." & StringMid($KarDat, 6, 2) & "." & $year
    	$OSaDat = StringMid($OSaDat, 9) & "." & StringMid($OSaDat, 6, 2) & "." & $year
    	$OSoDat = StringMid($OSoDat, 9) & "." & StringMid($OSoDat, 6, 2) & "." & $year
    	$OMoDat = StringMid($OMoDat, 9) & "." & StringMid($OMoDat, 6, 2) & "." & $year
    	$HiFaDat = StringMid($HiFaDat, 9) & "." & StringMid($HiFaDat, 6, 2) & "." & $year
    	$PfSoDat = StringMid($PfSoDat, 9) & "." & StringMid($PfSoDat, 6, 2) & "." & $year
    	$PfMoDat = StringMid($PfMoDat, 9) & "." & StringMid($PfMoDat, 6, 2) & "." & $year
    	$FroDat = StringMid($FroDat, 9) & "." & StringMid($FroDat, 6, 2) & "." & $year
    
    	;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
    
    	;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
    	;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
    	For $maitag = 8 To 14
    		If _DateToDayOfWeek($year, 5, $maitag) = 1 Then
    			If $maitag < 10 Then
    				$maitag = "0" & $maitag
    			EndIf
    			$MutterDat = $maitag & "." & "05." & $year
    			If $MutterDat = $PfSoDat Then
    				$MutterDat = _DateAdd( 'd', -7, $year & "/05/" & $maitag)
    				$MutterDat = StringMid($MutterDat, 9) & "." & StringMid($MutterDat, 6, 2) & "." & StringMid($MutterDat, 1, 4)
    			EndIf
    			ExitLoop
    		EndIf
    	Next
    
    	;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
    	For $oktobertag = 1 To 7
    		If _DateToDayOfWeek($year, 10, $oktobertag) = 1 Then
    			$oktobertag = "0" & $oktobertag
    			$ErnteDat = $oktobertag & "." & "10." & $year
    			ExitLoop
    		EndIf
    	Next
    
    	;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
    	For $deztag = 18 To 24
    		If _DateToDayOfWeek($year, 12, $deztag) = 1 Then
    			$4AdvDat = $year & "/12/" & $deztag
    			$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
    			$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
    			$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
    			$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
    			$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
    			ExitLoop
    		EndIf
    	Next
    	$tmp = StringMid($4AdvDat, 9) & "." & StringMid($4AdvDat, 6, 2) & "." & StringMid($4AdvDat, 1, 4)
    	$4AdvDat = StringMid($tmp, 1, 6) & $year
    	$tmp = StringMid($3AdvDat, 9) & "." & StringMid($3AdvDat, 6, 2) & "." & StringMid($3AdvDat, 1, 4)
    	$3AdvDat = StringMid($tmp, 1, 6) & $year
    	$tmp = StringMid($2AdvDat, 9) & "." & StringMid($2AdvDat, 6, 2) & "." & StringMid($2AdvDat, 1, 4)
    	$2AdvDat = StringMid($tmp, 1, 6) & $year
    	$tmp = StringMid($1AdvDat, 9) & "." & StringMid($1AdvDat, 6, 2) & "." & StringMid($1AdvDat, 1, 4)
    	$1AdvDat = StringMid($tmp, 1, 6) & $year
    	$TotSoDat = StringMid($TotSoDat, 9) & "." & StringMid($TotSoDat, 6, 2) & "." & StringMid($TotSoDat, 1, 4)
    	$BuBDat = StringMid($BuBDat, 9) & "." & StringMid($BuBDat, 6, 2) & "." & StringMid($BuBDat, 1, 4)
    ;Übergabe an Array
    	$HDays[11][0] = $WFastDate
    	$HDays[11][1] = "Weiberfastnacht"
    	$HDays[12][0] = $RosDat
    	$HDays[12][1] = "Rosenmontag"
    	$HDays[13][0] = $FastDat
    	$HDays[13][1] = "Fastnacht"
    	$HDays[14][0] = $AschDat
    	$HDays[14][1] = "Aschermittwoch"
    	$HDays[15][0] = $GrDoDat
    	$HDays[15][1] = "Gründonnerstag"
    	$HDays[16][0] = $KarDat
    	$HDays[16][1] = "Karfreitag"
    	$HDays[17][0] = $OSaDat
    	$HDays[17][1] = "Ostersamstag"
    	$HDays[18][0] = $OSoDat
    	$HDays[18][1] = "Ostersonntag"
    	$HDays[19][0] = $OMoDat
    	$HDays[19][1] = "Ostermontag"
    	$HDays[20][0] = $HiFaDat
    	$HDays[20][1] = "Christi Himmelfahrt"
    	$HDays[21][0] = $PfSoDat
    	$HDays[21][1] = "Pfingstsonntag"
    	$HDays[22][0] = $PfMoDat
    	$HDays[22][1] = "Pfingstmontag"
    	$HDays[23][0] = $MutterDat
    	$HDays[23][1] = "Muttertag"
    	$HDays[24][0] = $FroDat
    	$HDays[24][1] = "Fronleichnam"
    	$HDays[25][0] = $ErnteDat
    	$HDays[25][1] = "Erntedankfest"
    	$HDays[26][0] = $BuBDat
    	$HDays[26][1] = "Buß- und Bettag"
    	$HDays[27][0] = $TotSoDat
    	$HDays[27][1] = "Totensonntag"
    	$HDays[28][0] = $1AdvDat
    	$HDays[28][1] = "1. Advent"
    	$HDays[29][0] = $2AdvDat
    	$HDays[29][1] = "2. Advent"
    	$HDays[30][0] = $3AdvDat
    	$HDays[30][1] = "3. Advent"
    	$HDays[31][0] = $4AdvDat
    	$HDays[31][1] = "4. Advent"
    	Return $HDays
    EndFunc   ;==>_Feiertage()
    Alles anzeigen
  • Outlook Journaleintragstyp benutzerdefiniert

    • BugFix
    • 8. Juni 2006 um 20:21

    So, nun noch zum Abschluß die bereinigte, etwas 'verschönte' und fehlerfrei laufende Version.

    Danke nochmal für eure Tipps! :tassen:

    Spoiler anzeigen
    C
    #include <GUIConstants.au3>
    #include <GuiList.au3>
    #NoTrayIcon
    
    
    Const $RegKey="HKEY_CURRENT_USER\Software\Microsoft\Shared Tools\Outlook\Journaling\"
    
    
    $Form1 = GUICreate("Outlook Journal-Eintragstyp", 552, 304, -1, -1)
    GUISetBkColor(0xFFF8DC)
    $Group1 = GUICtrlCreateGroup("Vorhandene Journaltypen", 20, 15, 341, 266)
    GUICtrlSetColor(-1, 0x0000FF)
    $List1 = GUICtrlCreateList("", 35, 37, 311, 245, -1, $WS_EX_CLIENTEDGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button_restore = GUICtrlCreateButton("&Wiederherstellen", 390, 65, 136, 30)
    $Button_add = GUICtrlCreateButton("Eintrag &hinzufügen", 390, 125, 136, 30)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $Button_del = GUICtrlCreateButton("Markierten Eintrag &löschen", 390, 185, 136, 30)
    $Button_end = GUICtrlCreateButton("&Ende", 390, 245, 136, 30)
    
    
    $Form2 = GUICreate("Neuen Eintragstyp hinzufügen", 377, 151, -1, -1)
    GUISetBkColor(0xFFF8DC)
    $Group2 = GUICtrlCreateGroup("Eintragstyp", 30, 15, 311, 66)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input1 = GUICtrlCreateInput("", 40, 40, 291, 26, -1, BitOR($SS_CENTER, $WS_EX_CLIENTEDGE))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button_cancel2 = GUICtrlCreateButton("&Abbrechen", 30, 95, 121, 26)
    $Button_add_back = GUICtrlCreateButton("&Hinzufügen", 220, 95, 121, 26)
    
    
    $Form3 = GUICreate("Achtung!", 531, 96, -1, -1)
    GUISetBkColor(0xFFF8DC)
    GUICtrlCreateLabel("Achtung!  Der Registry-Schlüssel wird gelöscht!   Ein Backup wird erstellt.", 20, 15, 492, 30, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN))
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetBkColor(-1, 0xff0000)
    GUICtrlSetColor(-1, 0xFFFF00)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button_deltrue = GUICtrlCreateButton("&Löschen", 20, 55, 85, 25)
    $Button_delfalse = GUICtrlCreateButton("&Nicht Löschen", 426, 55, 85, 25)
    
    
    $Form4 = GUICreate("Gelöschte Einträge wiederherstellen", 552, 304, -1, -1)
    GUISetBkColor(0xFFF8DC)
    $Group4 = GUICtrlCreateGroup("Vorhandene Backups", 20, 15, 341, 266)
    GUICtrlSetColor(-1, 0x0000FF)
    $List4 = GUICtrlCreateList("", 35, 37, 311, 245, -1, $WS_EX_CLIENTEDGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button_restore_back = GUICtrlCreateButton("Eintrag &wiederherstellen", 390, 185, 136, 30)
    $Button_cancel4 = GUICtrlCreateButton("&Abbrechen", 390, 245, 136, 30)
    
    
    If FileExists(@ScriptDir & "\outlk_key.ini") Then
    	GUICtrlSetState($Button_restore, $GUI_SHOW)
    Else
    	GUICtrlSetState($Button_restore, $GUI_HIDE)
    EndIf
    
    
    GUISetState(@SW_SHOW, $Form1)
    _ReadSubKeyRefreshList()
    While 1
    	$msg = GuiGetMsg()
    	Select
    	Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_end
    		ExitLoop
    	Case $msg = $Button_add
    		GUISetState(@SW_HIDE, $Form1)
    		GUISetState(@SW_SHOW, $Form2)
    		GUICtrlSetState($Input1, $GUI_FOCUS)
    	Case $msg = $Button_del
    		GUISetState(@SW_HIDE, $Form1)
    		GUISetState(@SW_SHOW, $Form3)
    		GUICtrlSetState($Button_delfalse, $GUI_FOCUS)
    	Case $msg = $Button_deltrue
    		$EntryDel = GUICtrlRead($List1)
    		If $EntryDel <> "" Then
    			_GetKeyToBackupINI()
    			RegDelete($RegKey&$EntryDel)
    			GUICtrlSetState($Button_restore, $GUI_SHOW)
    		Else
    			MsgBox(0, "Achtung!", "Es wurde kein Eintrag ausgewählt.")
    		EndIf	
    		GUISetState(@SW_HIDE, $Form3)
    		GUISetState(@SW_SHOW, $Form1)
    		_ReadSubKeyRefreshList()
    	Case $msg = $Button_delfalse
    		GUISetState(@SW_HIDE, $Form3)
    		GUISetState(@SW_SHOW, $Form1)
    	Case $msg = $Button_add_back
    		$NewEntry = GUICtrlRead($Input1)
    		If _GUICtrlListSelectString($List1, $NewEntry, -1) = $LB_ERR Then
    			If $NewEntry <> "" Then
    				_AddKeys4NewEntry($NewEntry)
    				GUICtrlSetData($Input1, "")
    				GUISetState(@SW_SHOW, $Form1)		
    				GUISetState(@SW_HIDE, $Form2)
    				_ReadSubKeyRefreshList()
    			Else
    				MsgBox(0, "Achtung!", "Kein neuer Eintrag erstellt!")
    			EndIf
    		Else
    			MsgBox(0, "Achtung!", "Eintrag existiert bereits!")
    			GUICtrlSetState($Input1, $GUI_FOCUS)
    		EndIf
    	Case $msg = $Button_cancel2
    		GUISetState(@SW_HIDE, $Form2)
    		GUISetState(@SW_SHOW, $Form1)
    	Case $msg = $Button_restore
    		GUISetState(@SW_HIDE, $Form1)
    		GUISetState(@SW_SHOW, $Form4)
    		_BackupList()
    	Case $msg = $Button_cancel4
    		GUISetState(@SW_HIDE, $Form4)
    		GUISetState(@SW_SHOW, $Form1)
    	Case $msg = $Button_restore_back
    		$EntryRestore = GUICtrlRead($List4)
    		If $EntryRestore <> "" Then
    			_RestoreKeyFromBackupINI()
    			IniDelete(@ScriptDir & "\outlk_key.ini", $EntryRestore)
    			If FileGetSize(@ScriptDir & "\outlk_key.ini") = 0 Then
    				FileDelete(@ScriptDir & "\outlk_key.ini")
    				GUICtrlSetState($Button_restore, $GUI_HIDE)
    			EndIf
    			$EntryRestore = ""
    			GUISetState(@SW_HIDE, $Form4)
    			GUISetState(@SW_SHOW, $Form1)
    			_ReadSubKeyRefreshList()
    		Else
    			MsgBox(0, "Achtung!", "Kein Eintrag zur Wiederherstellung ausgewählt.")
    		EndIf
    	EndSelect
    WEnd
    Exit
    
    
    #region ; Funktionen
    Func _ReadSubKeyRefreshList()
    Dim $i=0
    Dim $Wert, $Fehler=0
    	GUICtrlSetData($List1,"")
    	Do
    		$i+=1
    		$Wert=RegEnumKey($RegKey, $i)
    		$Fehler=@Error
    		If $Fehler=0 Then
    			GUICtrlSetData($List1, $Wert)
    		EndIf
    	Until $Fehler<>0
    EndFunc	
    
    
    Func _AddKeys4NewEntry($NewEntry)
    	RegWrite($RegKey&$NewEntry, "AutoJournaled", "REG_DWORD" , 00000000)
    	RegWrite($RegKey&$NewEntry, "JournalByContact", "REG_DWORD" , 00000000)
    	RegWrite($RegKey&$NewEntry, "Large Icon", "REG_SZ" , "[8]")
    	RegWrite($RegKey&$NewEntry, "Small Icon", "REG_SZ" , "[8]")
    	RegWrite($RegKey&$NewEntry, "Description", "REG_SZ" , $NewEntry)
    EndFunc
    
    
    Func _GetKeyToBackupINI()
    Dim $RegTypes[8]
    $RegTypes[1] = "REG_SZ"
    $RegTypes[2] = "REG_EXPAND_SZ"
    $RegTypes[3] = "REG_BINARY"
    $RegTypes[4] = "REG_DWORD"
    $RegTypes[5] = ""
    $RegTypes[6] = ""
    $RegTypes[7] = "REG_MULTI_SZ"
    Dim $i = 0
    Dim $Wert, $val, $Fehler = 0
    	Do
    		$i+=1
    		$Wert = RegEnumVal($RegKey&$EntryDel, $i)
    		$Fehler = @Error
    		If $Fehler = 0 Then
    			$val = RegRead($RegKey&$EntryDel, $Wert)
    			IniWrite ( @ScriptDir & "\outlk_key.ini", $EntryDel, $Wert, $val & ";" & $RegTypes[@extended] )
    			Sleep(50)
    		EndIf
    	Until $Fehler <> 0
    EndFunc
    
    
    Func _RestoreKeyFromBackupINI()
        $INISection = IniReadSection(@ScriptDir & "\outlk_key.ini", $EntryRestore)
        If UBound($INISection,0) <> 2 Then
            MsgBox(0, "Achtung!", "Sicherung <" & $EntryRestore & "> existiert nicht!.")
        Else
            For $i = 1 To $INISection[0][0]        
                $StrSplit = StringSplit($INISection[$i][1],";")
                RegWrite($RegKey&$EntryRestore, $INISection[$i][0], $StrSplit[2], $StrSplit[1])
    			Sleep(50)
            Next
        EndIf
    EndFunc
    
    
    Func _BackupList()
    	GUICtrlSetData($List4, "")
    	$var = IniReadSectionNames(@ScriptDir & "\outlk_key.ini")
    	If @error Then 
    		MsgBox(0, "Achtung!", "Keine gesicherten Einträge vorhanden.")
    	Else
    		For $i = 1 To $var[0]
    			GUICtrlSetData($List4, $var[$i])
    		Next
    	EndIf
    EndFunc
    #endregion
    Alles anzeigen
  • Weltmeisterschaft 2006 in Deutschland

    • BugFix
    • 8. Juni 2006 um 12:32
    Zitat

    Wieso Brasilien und nicht DE?

    Weil sie die "cool" findet. :tongue:
    Ich glaube die Deutschen haben bei ihr keine Chance, weil Kahn in der Mannschaft ist und den findet sie (Originalton) "doof".

  • Ewiger Kalender - Feiertage

    • BugFix
    • 8. Juni 2006 um 12:09

    Hi, ich will es euch nicht ersparen :D
    mein allererstes Script, dass in autoit entstand.
    Hintergrund:
    Eigentlich wollte ich nur die Zellersche Formel zur Wochentagsbestimmung mal testen und auch die Osterformel von C.F. Gauss.
    Entstanden ist das folgende Produkt:

    Spoiler anzeigen
    C
    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.0
    ;
    ;Osterformel (Gauss)
    ; a = Jahr mod 19
    ; b = Jahr mod 4
    ; c = Jahr mod 7
    ; H1 = Jahr div 100
    ; H2 = Jahr div 400
    ; N = 4 + H1 - H2
    ; M = 15 + H1 - H2 - [(8 * H1 + 13) div 25]
    ; d = (19 * a + M) mod 30
    ; e = (2 * b + 4 * c + 6 * d + N) mod 7
    ;wenn d + e = 35, dann ostern = 50
    ;wenn d = 28 und e = 6 und a > 10, dann ostern = 49
    ;in allen anderen Fällen: ostern = 22 + d + e
    ;ostern: Ostersonntag als Märzdatum
    ;
    ; ----------------------------------------------------------------------------
    
    
    
    
    #include <GuiConstants.au3>
    #include <Date.au3>
    #include <math.au3>
    
    
    
    
    GUICreate("Wochen- und Feiertagsbestimmung", 680, 485, (@DesktopWidth - 680) / 2, (@DesktopHeight - 485) / 2)
    GUISetBkColor(0xFFFACD)
    $Label_1 = GUICtrlCreateLabel("Bestimmen Sie den Wochentag ! (gültig: 1583 - 8201)", 200, 10, 280, 20)
    GUICtrlSetColor($Label_1, 0xFF0000)
    $aktDatum = GUICtrlCreateLabel(_NowNormDate(), 620, 10, 60, 20)
    
    
    ;Gruppe Optionsfelder zur Datumsauswahl
    $Group_T = GUICtrlCreateGroup("Tag", 15, 25, 650, 60)
    $R1 = GUICtrlCreateRadio("01", 20, 45, 30, 15)
    GUICtrlSetState($R1, $gui_checked)
    $R2 = GUICtrlCreateRadio("02", 60, 45, 30, 15)
    $R3 = GUICtrlCreateRadio("03", 100, 45, 30, 15)
    $R4 = GUICtrlCreateRadio("04", 140, 45, 30, 15)
    $R5 = GUICtrlCreateRadio("05", 180, 45, 30, 15)
    $R6 = GUICtrlCreateRadio("06", 220, 45, 30, 15)
    $R7 = GUICtrlCreateRadio("07", 260, 45, 30, 15)
    $R8 = GUICtrlCreateRadio("08", 300, 45, 30, 15)
    $R9 = GUICtrlCreateRadio("09", 340, 45, 30, 15)
    $R10 = GUICtrlCreateRadio("10", 380, 45, 30, 15)
    $R11 = GUICtrlCreateRadio("11", 420, 45, 30, 15)
    $R12 = GUICtrlCreateRadio("12", 460, 45, 30, 15)
    $R13 = GUICtrlCreateRadio("13", 500, 45, 30, 15)
    $R14 = GUICtrlCreateRadio("14", 540, 45, 30, 15)
    $R15 = GUICtrlCreateRadio("15", 580, 45, 30, 15)
    $R16 = GUICtrlCreateRadio("16", 20, 60, 30, 15)
    $R17 = GUICtrlCreateRadio("17", 60, 60, 30, 15)
    $R18 = GUICtrlCreateRadio("18", 100, 60, 30, 15)
    $R19 = GUICtrlCreateRadio("19", 140, 60, 30, 15)
    $R20 = GUICtrlCreateRadio("20", 180, 60, 30, 15)
    $R21 = GUICtrlCreateRadio("21", 220, 60, 30, 15)
    $R22 = GUICtrlCreateRadio("22", 260, 60, 30, 15)
    $R23 = GUICtrlCreateRadio("23", 300, 60, 30, 15)
    $R24 = GUICtrlCreateRadio("24", 340, 60, 30, 15)
    $R25 = GUICtrlCreateRadio("25", 380, 60, 30, 15)
    $R26 = GUICtrlCreateRadio("26", 420, 60, 30, 15)
    $R27 = GUICtrlCreateRadio("27", 460, 60, 30, 15)
    $R28 = GUICtrlCreateRadio("28", 500, 60, 30, 15)
    $R29 = GUICtrlCreateRadio("29", 540, 60, 30, 15)
    $R30 = GUICtrlCreateRadio("30", 580, 60, 30, 15)
    $R31 = GUICtrlCreateRadio("31", 620, 60, 30, 15)
    
    
    $Group_M = GUICtrlCreateGroup("Monat", 15, 100, 255, 60)
    $R1m = GUICtrlCreateRadio("01", 20, 120, 30, 15)
    GUICtrlSetState($R1m, $gui_checked)
    $R2m = GUICtrlCreateRadio("02", 60, 120, 30, 15)
    $R3m = GUICtrlCreateRadio("03", 100, 120, 30, 15)
    $R4m = GUICtrlCreateRadio("04", 140, 120, 30, 15)
    $R5m = GUICtrlCreateRadio("05", 180, 120, 30, 15)
    $R6m = GUICtrlCreateRadio("06", 220, 120, 30, 15)
    $R7m = GUICtrlCreateRadio("07", 20, 135, 30, 15)
    $R8m = GUICtrlCreateRadio("08", 60, 135, 30, 15)
    $R9m = GUICtrlCreateRadio("09", 100, 135, 30, 15)
    $R10m = GUICtrlCreateRadio("10", 140, 135, 30, 15)
    $R11m = GUICtrlCreateRadio("11", 180, 135, 30, 15)
    $R12m = GUICtrlCreateRadio("12", 220, 135, 30, 15)
    
    
    $L_MsgTag = GUICtrlCreateLabel("", 340, 100, 200, 20)
    GUICtrlSetColor($L_MsgTag, 0xFF0000)
    $Label_4 = GUICtrlCreateLabel("Jahr", 340, 122, 40, 20)
    $But_minus = GUICtrlCreateButton("-", 406, 123, 15, 15)
    $But_plus = GUICtrlCreateButton("+", 468, 123, 15, 15)
    $Input_7 = GUICtrlCreateInput(StringMid(_NowCalcDate(), 1, 4), 425, 120, 40, 20)
    $Button_8 = GUICtrlCreateButton("Start", 615, 105, 50, 20)
    $Ende = GUICtrlCreateButton("Ende", 615, 145, 50, 20)
    $L_Schaltjahr = GUICtrlCreateLabel("", 500, 122, 80, 20)
    $Label_9 = GUICtrlCreateLabel("Wochentag:", 340, 145, 90, 20)
    $Label_10 = GUICtrlCreateLabel("", 417, 145, 90, 20)
    $L_Feiertage = GUICtrlCreateLabel("Die Feiertage dieses Jahres", 265, 175, 150, 20)
    $L_Fix = GUICtrlCreateLabel("Unveränderlich:", 70, 200, 90, 20)
    $L_Variabel = GUICtrlCreateLabel("Veränderlich (gültig: 1583 - 2999):", 380, 200, 170, 20)
    GUICtrlSetColor($L_Feiertage, 0xFF0000)
    GUICtrlSetColor($L_Fix, 0xFF0000)
    GUICtrlSetColor($L_Variabel, 0xFF0000)
    GUICtrlSetColor($L_Schaltjahr, 0x0000ff)
    GUICtrlSetColor($Label_10, 0xFF0000)
    ; Fixe Feiertage:
    $L_Neuj = GUICtrlCreateLabel("Neujahr", 80, 220, 90, 20)
    $L_NeujDat = GUICtrlCreateLabel("01.01.", 230, 220, 70, 20)
    $WD_N = GUICtrlCreateLabel("", 275, 220, 60, 20)
    $L_3K = GUICtrlCreateLabel("Heilige Drei Könige", 80, 235, 110, 20)
    $L_3KDat = GUICtrlCreateLabel("06.01.", 230, 235, 70, 20)
    $WD_3K = GUICtrlCreateLabel("", 275, 235, 60, 20)
    $L_Val = GUICtrlCreateLabel("Valentinstag", 80, 250, 110, 20)
    $L_ValDat = GUICtrlCreateLabel("14.02.", 230, 250, 70, 20)
    $WD_Val = GUICtrlCreateLabel("", 275, 250, 60, 20)
    $L_Mai = GUICtrlCreateLabel("Maifeiertag", 80, 265, 110, 20)
    $L_MaiDat = GUICtrlCreateLabel("01.05.", 230, 265, 70, 20)
    $WD_Mai = GUICtrlCreateLabel("", 275, 265, 60, 20)
    $L_Einheit = GUICtrlCreateLabel("Tag der Deutschen Einheit", 80, 280, 145, 20)
    $L_EinheitDat = GUICtrlCreateLabel("03.10.", 230, 280, 70, 20)
    $WD_Einheit = GUICtrlCreateLabel("", 275, 280, 60, 20)
    $L_Ref = GUICtrlCreateLabel("Reformationstag", 80, 295, 145, 20)
    $L_RefDat = GUICtrlCreateLabel("31.10.", 230, 295, 70, 20)
    $WD_Ref = GUICtrlCreateLabel("", 275, 295, 60, 20)
    $L_Aller = GUICtrlCreateLabel("Allerheiligen", 80, 310, 145, 20)
    $L_AllerDat = GUICtrlCreateLabel("01.11.", 230, 310, 70, 20)
    $WD_Aller = GUICtrlCreateLabel("", 275, 310, 60, 20)
    $L_HlA = GUICtrlCreateLabel("Heiligabend", 80, 325, 145, 20)
    $L_HlADat = GUICtrlCreateLabel("24.12.", 230, 325, 70, 20)
    $WD_Heil = GUICtrlCreateLabel("", 275, 325, 60, 20)
    $L_1WT = GUICtrlCreateLabel("1. Weihnachtsfeiertag", 80, 340, 145, 20)
    $L_1WTDat = GUICtrlCreateLabel("25.12.", 230, 340, 70, 20)
    $WD_1W = GUICtrlCreateLabel("", 275, 340, 60, 20)
    $L_2WT = GUICtrlCreateLabel("2. Weihnachtsfeiertag", 80, 355, 145, 20)
    $L_2WTDat = GUICtrlCreateLabel("26.12.", 230, 355, 70, 20)
    $WD_2W = GUICtrlCreateLabel("", 275, 355, 60, 20)
    $L_Sil = GUICtrlCreateLabel("Silvester", 80, 370, 145, 20)
    $L_SilDat = GUICtrlCreateLabel("31.12.", 230, 370, 70, 20)
    $WD_Sil = GUICtrlCreateLabel("", 275, 370, 60, 20)
    
    
    $L_Advent = GUICtrlCreateLabel("Adventstage:", 185, 420, 80, 20)
    GUICtrlSetColor($L_Advent, 0xFF0000)
    $L_1Adv = GUICtrlCreateLabel("1. Advent", 80, 440, 60, 20)
    $L_1AdvDat = GUICtrlCreateLabel("", 90, 460, 40, 20)
    $L_2Adv = GUICtrlCreateLabel("2. Advent", 150, 440, 60, 20)
    $L_2AdvDat = GUICtrlCreateLabel("", 160, 460, 40, 20)
    $L_3Adv = GUICtrlCreateLabel("3. Advent", 220, 440, 60, 20)
    $L_3AdvDat = GUICtrlCreateLabel("", 230, 460, 40, 20)
    $L_4Adv = GUICtrlCreateLabel("4. Advent", 290, 440, 60, 20)
    $L_4AdvDat = GUICtrlCreateLabel("", 300, 460, 40, 20)
    GUICtrlSetColor($L_1AdvDat, 0x0000ff)
    GUICtrlSetColor($L_2AdvDat, 0x0000ff)
    GUICtrlSetColor($L_3AdvDat, 0x0000ff)
    GUICtrlSetColor($L_4AdvDat, 0x0000ff)
    ; Variable Feiertage:
    $L_WFast = GUICtrlCreateLabel("Weiberfastnacht", 390, 220, 145, 20)
    $L_WFastDate = GUICtrlCreateLabel("", 550, 220, 70, 20)
    $L_Ros = GUICtrlCreateLabel("Rosenmontag", 390, 235, 145, 20)
    $L_RosDat = GUICtrlCreateLabel("", 550, 235, 70, 20)
    $L_Fast = GUICtrlCreateLabel("Fastnacht", 390, 250, 145, 20)
    $L_FastDat = GUICtrlCreateLabel("", 550, 250, 70, 20)
    $L_Asch = GUICtrlCreateLabel("Aschermittwoch", 390, 265, 145, 20)
    $L_AschDat = GUICtrlCreateLabel("", 550, 265, 70, 20)
    $L_GrDo = GUICtrlCreateLabel("Gründonnerstag", 390, 280, 145, 20)
    $L_GrDoDat = GUICtrlCreateLabel("", 550, 280, 70, 20)
    $L_Kar = GUICtrlCreateLabel("Karfreitag", 390, 295, 145, 20)
    $L_KarDat = GUICtrlCreateLabel("", 550, 295, 70, 20)
    $L_OSa = GUICtrlCreateLabel("Ostersamstag", 390, 310, 145, 20)
    $L_OSaDat = GUICtrlCreateLabel("", 550, 310, 70, 20)
    $L_OSo = GUICtrlCreateLabel("Ostersonntag", 390, 325, 145, 20)
    $L_OSoDat = GUICtrlCreateLabel("", 550, 325, 70, 20)
    $L_OMo = GUICtrlCreateLabel("Ostermontag", 390, 340, 145, 20)
    $L_OMoDat = GUICtrlCreateLabel("", 550, 340, 70, 20)
    $L_HiFa = GUICtrlCreateLabel("Christi Himmelfahrt", 390, 355, 145, 20)
    $L_HiFaDat = GUICtrlCreateLabel("", 550, 355, 70, 20)
    $L_Mutter = GUICtrlCreateLabel("Muttertag", 390, 370, 145, 20)
    $L_MutterDat = GUICtrlCreateLabel("", 550, 370, 70, 20)
    $L_PfSo = GUICtrlCreateLabel("Pfingstsonntag", 390, 385, 145, 20)
    $L_PfSoDat = GUICtrlCreateLabel("", 550, 385, 70, 20)
    $L_PfMo = GUICtrlCreateLabel("Pfingstmontag", 390, 400, 145, 20)
    $L_PfMoDat = GUICtrlCreateLabel("", 550, 400, 70, 20)
    $L_Fro = GUICtrlCreateLabel("Fronleichnam", 390, 415, 145, 20)
    $L_FroDat = GUICtrlCreateLabel("", 550, 415, 70, 20)
    $L_Ernte = GUICtrlCreateLabel("Erntedankfest", 390, 430, 145, 20)
    $L_ErnteDat = GUICtrlCreateLabel("", 550, 430, 70, 20)
    $L_BuB = GUICtrlCreateLabel("Buß- und Bettag", 390, 445, 145, 20)
    $L_BuBDat = GUICtrlCreateLabel("", 550, 445, 70, 20)
    $L_TotSo = GUICtrlCreateLabel("Totensonntag", 390, 460, 145, 20)
    $L_TotSoDat = GUICtrlCreateLabel("", 550, 460, 70, 20)
    
    
    GUISetState()
    While 1
    	$msg = GUIGetMsg()
    	If $msg = $But_minus Then
    		GUICtrlSetData($Input_7, GUICtrlRead($Input_7) - 1)
    	EndIf
    	If $msg = $But_plus Then
    		GUICtrlSetData($Input_7, GUICtrlRead($Input_7) + 1)
    	EndIf
    	If $msg = $Button_8 Then
    		GUICtrlSetData($L_MsgTag, "")
    		GUICtrlSetData($L_Schaltjahr, "")
    		GUICtrlSetData($L_WFastDate, "")
    		GUICtrlSetData($L_RosDat, "")
    		GUICtrlSetData($L_FastDat, "")
    		GUICtrlSetData($L_AschDat, "")
    		GUICtrlSetData($L_GrDoDat, "")
    		GUICtrlSetData($L_KarDat, "")
    		GUICtrlSetData($L_OSaDat, "")
    		GUICtrlSetData($L_OSoDat, "")
    		GUICtrlSetData($L_OMoDat, "")
    		GUICtrlSetData($L_HiFaDat, "")
    		GUICtrlSetData($L_PfSoDat, "")
    		GUICtrlSetData($L_MutterDat, "")
    		GUICtrlSetData($L_PfMoDat, "")
    		GUICtrlSetData($L_FroDat, "")
    		GUICtrlSetData($L_ErnteDat, "")
    		GUICtrlSetData($L_TotSoDat, "")
    		GUICtrlSetData($L_BuBDat, "")
    		GUICtrlSetData($Label_10, "")
    		GUICtrlSetData($WD_N, "")
    		GUICtrlSetData($WD_3K, "")
    		GUICtrlSetData($WD_Val, "")
    		GUICtrlSetData($WD_Mai, "")
    		GUICtrlSetData($WD_Einheit, "")
    		GUICtrlSetData($WD_Ref, "")
    		GUICtrlSetData($WD_Aller, "")
    		GUICtrlSetData($WD_Heil, "")
    		GUICtrlSetData($WD_1W, "")
    		GUICtrlSetData($WD_2W, "")
    		GUICtrlSetData($WD_Sil, "")
    		GUICtrlSetData($L_1AdvDat, "")
    		GUICtrlSetData($L_2AdvDat, "")
    		GUICtrlSetData($L_3AdvDat, "")
    		GUICtrlSetData($L_4AdvDat, "")
    
    		$day1 = GUICtrlRead($R1)
    		$day2 = GUICtrlRead($R2)
    		$day3 = GUICtrlRead($R3)
    		$day4 = GUICtrlRead($R4)
    		$day5 = GUICtrlRead($R5)
    		$day6 = GUICtrlRead($R6)
    		$day7 = GUICtrlRead($R7)
    		$day8 = GUICtrlRead($R8)
    		$day9 = GUICtrlRead($R9)
    		$day10 = GUICtrlRead($R10)
    		$day11 = GUICtrlRead($R11)
    		$day12 = GUICtrlRead($R12)
    		$day13 = GUICtrlRead($R13)
    		$day14 = GUICtrlRead($R14)
    		$day15 = GUICtrlRead($R15)
    		$day16 = GUICtrlRead($R16)
    		$day17 = GUICtrlRead($R17)
    		$day18 = GUICtrlRead($R18)
    		$day19 = GUICtrlRead($R19)
    		$day20 = GUICtrlRead($R20)
    		$day21 = GUICtrlRead($R21)
    		$day22 = GUICtrlRead($R22)
    		$day23 = GUICtrlRead($R23)
    		$day24 = GUICtrlRead($R24)
    		$day25 = GUICtrlRead($R25)
    		$day26 = GUICtrlRead($R26)
    		$day27 = GUICtrlRead($R27)
    		$day28 = GUICtrlRead($R28)
    		$day29 = GUICtrlRead($R29)
    		$day30 = GUICtrlRead($R30)
    		$day31 = GUICtrlRead($R31)
    
    		$mon1 = GUICtrlRead($R1m)
    		$mon2 = GUICtrlRead($R2m)
    		$mon3 = GUICtrlRead($R3m)
    		$mon4 = GUICtrlRead($R4m)
    		$mon5 = GUICtrlRead($R5m)
    		$mon6 = GUICtrlRead($R6m)
    		$mon7 = GUICtrlRead($R7m)
    		$mon8 = GUICtrlRead($R8m)
    		$mon9 = GUICtrlRead($R9m)
    		$mon10 = GUICtrlRead($R10m)
    		$mon11 = GUICtrlRead($R11m)
    		$mon12 = GUICtrlRead($R12m)
    
    		Select
    			Case $day1 = 1
    				$D = 1
    			Case $day2 = 1
    				$D = 2
    			Case $day3 = 1
    				$D = 3
    			Case $day4 = 1
    				$D = 4
    			Case $day5 = 1
    				$D = 5
    			Case $day6 = 1
    				$D = 6
    			Case $day7 = 1
    				$D = 7
    			Case $day8 = 1
    				$D = 8
    			Case $day9 = 1
    				$D = 9
    			Case $day10 = 1
    				$D = 10
    			Case $day11 = 1
    				$D = 11
    			Case $day12 = 1
    				$D = 12
    			Case $day13 = 1
    				$D = 13
    			Case $day14 = 1
    				$D = 14
    			Case $day15 = 1
    				$D = 15
    			Case $day16 = 1
    				$D = 16
    			Case $day17 = 1
    				$D = 17
    			Case $day18 = 1
    				$D = 18
    			Case $day19 = 1
    				$D = 19
    			Case $day20 = 1
    				$D = 20
    			Case $day21 = 1
    				$D = 21
    			Case $day22 = 1
    				$D = 22
    			Case $day23 = 1
    				$D = 23
    			Case $day24 = 1
    				$D = 24
    			Case $day25 = 1
    				$D = 25
    			Case $day26 = 1
    				$D = 26
    			Case $day27 = 1
    				$D = 27
    			Case $day28 = 1
    				$D = 28
    			Case $day29 = 1
    				$D = 29
    			Case $day30 = 1
    				$D = 30
    			Case $day31 = 1
    				$D = 31
    		EndSelect
    
    		Select
    			Case $mon1 = 1
    				$mon = 1
    			Case $mon2 = 1
    				$mon = 2
    			Case $mon3 = 1
    				$mon = 3
    			Case $mon4 = 1
    				$mon = 4
    			Case $mon5 = 1
    				$mon = 5
    			Case $mon6 = 1
    				$mon = 6
    			Case $mon7 = 1
    				$mon = 7
    			Case $mon8 = 1
    				$mon = 8
    			Case $mon9 = 1
    				$mon = 9
    			Case $mon10 = 1
    				$mon = 10
    			Case $mon11 = 1
    				$mon = 11
    			Case $mon12 = 1
    				$mon = 12
    		EndSelect
    
    		$year = GUICtrlRead($Input_7) ;Eingegebenes Jahr(JJJJ)
    		$Schalt = 0
    		If _DateIsLeapYear($year) Then ;Überprüfung Schaltjahr
    			$Schalt = 1
    			GUICtrlSetData($L_Schaltjahr, "Schaltjahr")
    		EndIf
    		If $mon = 2 And $D > 28 Then ;Überprüfung/Korrektur Februardatum
    			If $Schalt = 0 Then
    				$D = 28
    				GUICtrlSetState($R28, $gui_checked)
    			Else
    				$D = 29
    				GUICtrlSetState($R29, $gui_checked)
    			EndIf
    			GUICtrlSetData($L_MsgTag, "'Tag' für Berechnung auf " & $D & " korrigiert!")
    		EndIf
    		If ($mon = 4 Or $mon = 6 Or $mon = 9 Or $mon = 11) And $D > 30 Then
    			$D = 30
    			GUICtrlSetData($L_MsgTag, "'Tag' für Berechnung auf " & $D & " korrigiert!")
    			GUICtrlSetState($R30, $gui_checked)
    		EndIf
    		$C = Int($year / 100) ;Bestimmung Jahrhundert
    		$J = Mod($year, 100) ;Bestimmung Jahr
    
    		If $mon < 3 Then ;Jan und Feb gehören zum Vorjahr(hundert)
    			If $J = 0 Then
    				$J = 99
    				$C = $C - 1
    			Else
    				$J = $J - 1
    			EndIf
    		EndIf
    
    		Select
    			Case $mon > 2 ;Altrömische Zeitrechnung beginnt im März
    				$M = $mon - 2
    			Case Else
    				$M = $mon + 10
    		EndSelect
    
    		$W = Mod((_Floor (2.6 * $M - 0.2) + $D + $J+ (_Floor ($J / 4)) + (_Floor ($C / 4)) - 2 * $C), 7)
    
    		; Ist das Ergebnis negativ , so addiert man 7 hinzu, so dass eine positive Zahl entsteht.
    		; Diese Zahl entspricht dann dem Wochentag.
    		If $W < 0 Then
    			$W = $W + 7
    		EndIf
    
    		If $year > 1582 And $year < 8202 Then
    			Select
    				Case $W = 0
    					GUICtrlSetData($Label_10, "Sonntag")
    				Case $W = 1
    					GUICtrlSetData($Label_10, "Montag")
    				Case $W = 2
    					GUICtrlSetData($Label_10, "Dienstag")
    				Case $W = 3
    					GUICtrlSetData($Label_10, "Mittwoch")
    				Case $W = 4
    					GUICtrlSetData($Label_10, "Donnerstag")
    				Case $W = 5
    					GUICtrlSetData($Label_10, "Freitag")
    				Case $W = 6
    					GUICtrlSetData($Label_10, "Sonnabend")
    			EndSelect
    		EndIf
    
    		GUICtrlSetData($WD_N, _WeekDay(1, 1, $year))
    		GUICtrlSetData($WD_3K, _WeekDay(6, 1, $year))
    		GUICtrlSetData($WD_Val, _WeekDay(14, 2, $year))
    		GUICtrlSetData($WD_Mai, _WeekDay(1, 5, $year))
    		GUICtrlSetData($WD_Einheit, _WeekDay(3, 10, $year))
    		GUICtrlSetData($WD_Ref, _WeekDay(31, 10, $year))
    		GUICtrlSetData($WD_Aller, _WeekDay(1, 11, $year))
    		GUICtrlSetData($WD_Heil, _WeekDay(24, 12, $year))
    		GUICtrlSetData($WD_1W, _WeekDay(25, 12, $year))
    		GUICtrlSetData($WD_2W, _WeekDay(26, 12, $year))
    		GUICtrlSetData($WD_Sil, _WeekDay(31, 12, $year))
    		GUICtrlSetColor($WD_N, 0x0000ff)
    		GUICtrlSetColor($WD_3K, 0x0000ff)
    		GUICtrlSetColor($WD_Val, 0x0000ff)
    		GUICtrlSetColor($WD_Mai, 0x0000ff)
    		GUICtrlSetColor($WD_Einheit, 0x0000ff)
    		GUICtrlSetColor($WD_Ref, 0x0000ff)
    		GUICtrlSetColor($WD_Aller, 0x0000ff)
    		GUICtrlSetColor($WD_Heil, 0x0000ff)
    		GUICtrlSetColor($WD_1W, 0x0000ff)
    		GUICtrlSetColor($WD_2W, 0x0000ff)
    		GUICtrlSetColor($WD_Sil, 0x0000ff)
    
    		;Ermittlung Ostern und abhängige Feiertage (Osterformel Gauss)
    		If $year > 1582 And $year < 3000 Then
    			$aa = Mod($year, 19)
    			$bb = Mod($year, 4)
    			$cc = Mod($year, 7)
    			$H1 = _Div($year, 100)
    			$H2 = _Div($year, 400)
    			$N = 4 + $H1 - $H2
    			$MM = 15 + $H1 - $H2 - _Floor (_Div((8 * $H1 + 13), 25))
    			$dd = Mod((19 * $aa + $MM), 30)
    			$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N), 7)
    			If $dd + $ee = 35 Then
    				$Easter = 50
    			Else
    				If $dd = 28 And $ee = 6 And $aa > 10 Then
    					$Easter = 49
    				Else
    					$Easter = 22 + $dd + $ee
    				EndIf
    			EndIf
    			If $Easter < 32 Then
    				$EasterDay = $Easter
    				$EasterMonth = "03"
    			Else
    				$EasterDay = $Easter - 31
    				$EasterMonth = "04"
    			EndIf
    			If $EasterDay < 10 Then
    				$EasterDay = "0" & $EasterDay
    			EndIf
    
    			If $year < 1900 Then ;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
    				$RestJahr = Mod($year, 100)
    				If $Schalt = 1 Then
    					If $RestJahr < 10 Then
    						$RestJahr = "0" & $RestJahr
    					EndIf
    					$Tempyear = 20 & $RestJahr
    				Else
    					If $RestJahr < 10 Then
    						$RestJahr = "0" & $RestJahr
    					EndIf
    					$Tempyear = 19 & $RestJahr
    				EndIf
    				$EasterDate = $Tempyear & "/" & $EasterMonth & "/" & $EasterDay
    			Else
    				$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
    			EndIf
    			$WFastDate = _DateAdd( 'd', -52, $EasterDate)
    			$RosDat = _DateAdd( 'd', -48, $EasterDate)
    			$FastDat = _DateAdd( 'd', -47, $EasterDate)
    			$AschDat = _DateAdd( 'd', -46, $EasterDate)
    			$GrDoDat = _DateAdd( 'd', -3, $EasterDate)
    			$KarDat = _DateAdd( 'd', -2, $EasterDate)
    			$OSaDat = _DateAdd( 'd', -1, $EasterDate)
    			$OSoDat = $EasterDate
    			$OMoDat = _DateAdd( 'd', 1, $EasterDate)
    			$HiFaDat = _DateAdd( 'd', 39, $EasterDate)
    			$PfSoDat = _DateAdd( 'd', 49, $EasterDate)
    			$PfMoDat = _DateAdd( 'd', 50, $EasterDate)
    			$FroDat = _DateAdd( 'd', 60, $EasterDate)
    
    			;Umstellen auf TT.MM.JJJJ
    			$WFastDate = StringMid($WFastDate, 9) & "." & StringMid($WFastDate, 6, 2) & "." & $year
    			$RosDat = StringMid($RosDat, 9) & "." & StringMid($RosDat, 6, 2) & "." & $year
    			$FastDat = StringMid($FastDat, 9) & "." & StringMid($FastDat, 6, 2) & "." & $year
    			$AschDat = StringMid($AschDat, 9) & "." & StringMid($AschDat, 6, 2) & "." & $year
    			$GrDoDat = StringMid($GrDoDat, 9) & "." & StringMid($GrDoDat, 6, 2) & "." & $year
    			$KarDat = StringMid($KarDat, 9) & "." & StringMid($KarDat, 6, 2) & "." & $year
    			$OSaDat = StringMid($OSaDat, 9) & "." & StringMid($OSaDat, 6, 2) & "." & $year
    			$OSoDat = StringMid($OSoDat, 9) & "." & StringMid($OSoDat, 6, 2) & "." & $year
    			$OMoDat = StringMid($OMoDat, 9) & "." & StringMid($OMoDat, 6, 2) & "." & $year
    			$HiFaDat = StringMid($HiFaDat, 9) & "." & StringMid($HiFaDat, 6, 2) & "." & $year
    			$PfSoDat = StringMid($PfSoDat, 9) & "." & StringMid($PfSoDat, 6, 2) & "." & $year
    			$PfMoDat = StringMid($PfMoDat, 9) & "." & StringMid($PfMoDat, 6, 2) & "." & $year
    			$FroDat = StringMid($FroDat, 9) & "." & StringMid($FroDat, 6, 2) & "." & $year
    
    			;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
    
    			;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
    			;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
    			For $maitag = 8 To 14
    				If _WeekDay($maitag, 5, $year) = "Sonntag" Then
    					If $maitag < 10 Then
    						$maitag = "0" & $maitag
    					EndIf
    					$MutterDat = $maitag & "." & "05." & $year
    					If $MutterDat = $PfSoDat Then
    						$MutterDat = _DateAdd( 'd', -7, $year & "/05/" & $maitag)
    						$MutterDat = _DateToNorm($MutterDat)
    					EndIf
    					ExitLoop
    				EndIf
    			Next
    
    			;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
    			For $oktobertag = 1 To 7
    				If _WeekDay($oktobertag, 10, $year) = "Sonntag" Then
    					$oktobertag = "0" & $oktobertag
    					$ErnteDat = $oktobertag & "." & "10." & $year
    					ExitLoop
    				EndIf
    			Next
    
    			;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
    			For $deztag = 18 To 24
    				If _WeekDay($deztag, 12, $year) = "Sonntag" Then
    					$4AdvDat = $year & "/12/" & $deztag
    					$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
    					$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
    					$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
    					$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
    					$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
    					ExitLoop
    				EndIf
    			Next
    			$4AdvDat = StringMid(_DateToNorm($4AdvDat), 1, 6)
    			$3AdvDat = StringMid(_DateToNorm($3AdvDat), 1, 6)
    			$2AdvDat = StringMid(_DateToNorm($2AdvDat), 1, 6)
    			$1AdvDat = StringMid(_DateToNorm($1AdvDat), 1, 6)
    			$TotSoDat = _DateToNorm($TotSoDat)
    			$BuBDat = _DateToNorm($BuBDat)
    
    			GUICtrlSetData($L_WFastDate, $WFastDate)
    			GUICtrlSetData($L_RosDat, $RosDat)
    			GUICtrlSetData($L_FastDat, $FastDat)
    			GUICtrlSetData($L_AschDat, $AschDat)
    			GUICtrlSetData($L_GrDoDat, $GrDoDat)
    			GUICtrlSetData($L_KarDat, $KarDat)
    			GUICtrlSetData($L_OSaDat, $OSaDat)
    			GUICtrlSetData($L_OSoDat, $OSoDat)
    			GUICtrlSetData($L_OMoDat, $OMoDat)
    			GUICtrlSetData($L_HiFaDat, $HiFaDat)
    			GUICtrlSetData($L_MutterDat, $MutterDat)
    			GUICtrlSetData($L_PfSoDat, $PfSoDat)
    			GUICtrlSetData($L_PfMoDat, $PfMoDat)
    			GUICtrlSetData($L_FroDat, $FroDat)
    			GUICtrlSetData($L_ErnteDat, $ErnteDat)
    			GUICtrlSetData($L_TotSoDat, $TotSoDat)
    			GUICtrlSetData($L_BuBDat, $BuBDat)
    			GUICtrlSetData($L_1AdvDat, $1AdvDat)
    			GUICtrlSetData($L_2AdvDat, $2AdvDat)
    			GUICtrlSetData($L_3AdvDat, $3AdvDat)
    			GUICtrlSetData($L_4AdvDat, $4AdvDat)
    		EndIf
    
    	EndIf
    	Select
    		Case $msg = $GUI_EVENT_CLOSE
    			ExitLoop
    		Case $msg = $Ende
    			ExitLoop
    	EndSelect
    WEnd
    Exit
    
    
    ;===============================================================================
    ;
    ; Function Name: _Div()
    ;
    ; Description: Ermittelt den ganzzahligen Anteil einer Division.
    ;
    ; Syntax: _Div( $Div, $Dis )
    ;
    ; Parameter(s): $Div = Divident
    ; $Dis = Divisor
    ;
    ;===============================================================================
    Func _Div($Div, $Dis)
    	Return Int($Div / $Dis)
    EndFunc   ;==>_Div
    
    
    ;===============================================================================
    ;
    ; Description: Datum ( YYYY/MM/TT ) umstellen auf ==> ( TT.MM.JJJJ )
    ;
    ; Parameter: $Datum(YYYY/MM/TT)
    ;
    ; Return Value: (TT.MM.JJJJ)
    ;
    ;===============================================================================
    Func _DateToNorm($Datum)
    	Return StringMid($Datum, 9) & "." & StringMid($Datum, 6, 2) & "." & StringMid($Datum, 1, 4)
    EndFunc   ;==>_DateToNorm
    
    
    ;===============================================================================
    ;
    ; Description: Ausgabe aktuelles Datum als ( TT.MM.JJJJ )
    ;
    ; Parameter: keine
    ;
    ; Return Value: (TT.MM.JJJJ)
    ;
    ;===============================================================================
    Func _NowNormDate()
    	Return (@MDAY & "." & @MON & "." & @YEAR)
    EndFunc   ;==>_NowNormDate
    
    
    ;===============================================================================
    ;
    ; Description: Ermittlung Wochentag aus Datum
    ;
    ; Parameter: $D, $mon, $year
    ;
    ; Return Value Wochentag
    ;
    ;===============================================================================
    Func _WeekDay($D, $mon, $year)
    	$Schalt = 0
    	If _DateIsLeapYear($year) Then ;Überprüfung Schaltjahr
    		$Schalt = 1
    	EndIf
    	If $mon = 2 And $D > 28 Then ;Überprüfung/Korrektur Februardatum
    		If $Schalt = 0 Then
    			$D = 28
    		Else
    			$D = 29
    		EndIf
    	EndIf
    	If ($mon = 4 Or $mon = 6 Or $mon = 9 Or $mon = 11) And $D > 30 Then
    		$D = 30
    	EndIf
    	$C = Int($year / 100) ;Bestimmung Jahrhundert
    	$J = Mod($year, 100) ;Bestimmung Jahr
    
    	If $mon < 3 Then ;Jan und Feb gehören zum Vorjahr(hundert)
    		If $J = 0 Then
    			$J = 99
    			$C = $C - 1
    		Else
    			$J = $J - 1
    		EndIf
    	EndIf
    
    	Select
    		Case $mon > 2 ;Altrömische Zeitrechnung beginnt im März
    			$M = $mon - 2
    		Case Else
    			$M = $mon + 10
    	EndSelect
    
    	$W = Mod((_Floor (2.6 * $M - 0.2) + $D + $J+ (_Floor ($J / 4)) + (_Floor ($C / 4)) - 2 * $C), 7)
    
    	; Ist das Ergebnis negativ , so addiert man 7 hinzu, so dass eine positive Zahl entsteht.
    	; Diese Zahl entspricht dann dem Wochentag.
    	If $W < 0 Then
    		$W = $W + 7
    	EndIf
    
    	Select
    		Case $W = 0
    			$WeekDay = "Sonntag"
    		Case $W = 1
    			$WeekDay = "Montag"
    		Case $W = 2
    			$WeekDay = "Dienstag"
    		Case $W = 3
    			$WeekDay = "Mittwoch"
    		Case $W = 4
    			$WeekDay = "Donnerstag"
    		Case $W = 5
    			$WeekDay = "Freitag"
    		Case $W = 6
    			$WeekDay = "Sonnabend"
    	EndSelect
    	Return $WeekDay
    EndFunc   ;==>_WeekDay
    Alles anzeigen

    Einiges würde ich heute wahrscheinlich anders angehen. Aber es funktioniert prima. Vielleicht ist es euch ja auch von Nutzen.

  • Subscript used with non-Array variable

    • BugFix
    • 8. Juni 2006 um 11:14

    Heureka, ich habs!

    Ein wirklich blöder Fehler. Statt den Reg-typ aus StringSplit[2] zu entnehmen, war die [0] eingetragen. Na gut - jetzt klappt es.

    Code
    Func _RestoreKeyFromBackupINI()
        $INISection = IniReadSection(@ScriptDir & "\outlk_key.ini", $EntryRestore)
        If UBound($INISection,0) <> 2 Then
            MsgBox(4096, "Achtung!", "Sicherung <" & $EntryRestore & "> existiert nicht!.")
        Else
            For $i = 1 To $INISection[0][0]        
                $StrSplit = StringSplit($INISection[$i][1],";")
                RegWrite($RegKey&$EntryRestore, $INISection[$i][0], $StrSplit[2], $StrSplit[1])
    			Sleep(50)
            Next
        EndIf
    EndFunc
    Alles anzeigen
  • Subscript used with non-Array variable

    • BugFix
    • 8. Juni 2006 um 10:01

    Danke Bernd,
    das war nicht die alleinige Ursache. Manchmal wurde die INI-Datei erstellt und manchmal nicht. Ursache soweit ich bis jetzt weiß :D : Das Script läuft schneller als der Plattenzugriff.
    Ich hab jetzt hinter dem Schreibbefehl eine Pause von 50 ms und bisher konnte ich den Fehler nicht wieder reproduzieren.

    Spoiler anzeigen
    Code
    Func _GetKeyToBackupINI()
    Dim $RegTypes[8]
    $RegTypes[1] = "REG_SZ"
    $RegTypes[2] = "REG_EXPAND_SZ"
    $RegTypes[3] = "REG_BINARY"
    $RegTypes[4] = "REG_DWORD"
    $RegTypes[5] = ""
    $RegTypes[6] = ""
    $RegTypes[7] = "REG_MULTI_SZ"
    Dim $i = 0
    Dim $Wert, $val, $Fehler = 0
    	Do
    		$i+=1
    		$Wert = RegEnumVal($RegKey&$EntryDel, $i)
    		$Fehler = @Error
    		If $Fehler = 0 Then
    			$val = RegRead($RegKey&$EntryDel, $Wert)
    			IniWrite ( @ScriptDir & "\outlk_key.ini", $EntryDel, $Wert, $val & ";" & $RegTypes[@extended] )
    			Sleep(50)
    		EndIf
    	Until $Fehler <> 0
    EndFunc
    Alles anzeigen

    Ich werde jetzt noch ein bischen an der Optik feilen und das fertige Produkt dann noch mal bei den Sripts einstellen.

    Edit:
    Da hab ich mich wohl zu früh gefreut. In der Kombination "Wiederherstellen" und gleich wieder "Löschen" wird kein INI-Eintrag geschrieben.
    Jetzt werd ich erst mal hundert Haltepunkte setzen und Variable für Variable checken.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™