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

  • CD/DVD-Laufwerke erkennen (open-close)

    • BugFix
    • 1. Juni 2006 um 10:52

    Hi ytwinky (u. alle anderen auch :D ),

    hast natürlich recht - "chr(dec(i))" bringt das gleiche wie "_HexToString(i)" und man spart sich den include.
    Aber du hast das Script zu weit gekürzt. Falls ein Virtuelles CD-Laufwerk vorhanden ist erhält dies in der Registry ebenfalls die Kennung "CdRom". Liegt es in der Lw-Buchstabenfolge vor den physikalischen CD-Lw wird das Virtuelle Lw als 1. Lw und das erste physikalischen CD-Lw als 2. Lw erkannt. Die Bezeichnung des Virtuellen Lw wird aber nicht ausgelesen, da dieses keine Firmwarebezeichnung hat (Folgestring mit "_______" beginnend).
    Hab auf meinem PC zufällig diese Konstellation - sonst wär mir das sicher auch nicht aufgefallen.

  • CD/DVD-Laufwerke erkennen (open-close)

    • BugFix
    • 31. Mai 2006 um 12:02

    So, da man die Info über das(die) CD/DVD-Laufwerk(e) sicher auch anderweitig verwerten kann, hab ich das ganze jetzt in eine Funktion gepackt.
    Ergänzend zu Lw-Buchstaben und Gerätebezeichnung kann jetzt auch die Firmwareversion ausgelesen werden.

    Im Download hab ich gleich eine GUI zum Ausprobieren vorangestellt.
    Geschrieben mit der aktuellen Beta.

    Spoiler anzeigen
    C
    ;==================================================================================================
    ; Function:		_GetCdDriveInfo($cd_pos, $cd_info_type)
    ;
    ; Description:	Get Info of physical CD/DVD-drives (Drive-Letter, Device-Name, Firmware)
    ;
    ; Parameter(s):	$cd_pos
    ;					1= First Drive;
    ;					2= Second Drive;
    ;					3= Info of Both Drives with Seperator " | "
    ;				$cd_info_type
    ;					1= Drive-Letter only
    ;					2= Device-Name only
    ;					3= Firmware-Version only
    ;					4= Drive-Letter & " " & Device-Name
    ;					5= Drive-Letter & " " & Device-Name & " " & Firmware-Version
    ;
    ; Return Value:	i.e. D:[ HL-DT-ST DVDRAM GSA-4081B][ v.A100] | [E:][ TOSHIBA DVD-ROM SD-M1612][ v.1004]
    ;				Sets @ERROR to:	1 - no CD/DVD-Device found
    ;								2 - Second CD/DVD-Device not found
    ;				no @ERROR sets 	if $cd_pos= 3 and Second CD/DVD-Device was'nt found
    ;								Return only First Drive Info
    ;
    ; Author:		BugFix (bug_fix@web.de)
    ;==================================================================================================
    #include <String.au3>
    
    
    Func _GetCdDriveInfo($cd_pos = 1, $cd_info_type = 1)
    	$cd1 = ""
    	$cd1_name = "no_drive"
    	$cd1_fw = ""
    	$cd2 = ""
    	$cd2_name = "no_drive"
    	$cd2_fw = ""
    	$p2 = 0
    
    	For $a = 68 To 90
    		$drv = Chr($a)
    		$reg = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\" & $drv & ":")
    		$val = ""
    		$name = ""
    		For $i = 1 To StringLen($reg) - 2 Step 2
    			$tmp = _HexToString(StringMid($reg, $i, 2))
    			If $tmp <> "" Then
    				$val = $val & $tmp
    			EndIf
    		Next
    		$p1 = StringInStr($val, "#") + 1
    		$type = StringMid($val, $p1, 5)
    		If $type = "CdRom" Then
    			$p2 = StringInStr($val, "__")
    			If $p2 > 6 Then
    				$name = StringMid($val, $p1 + 5, $p2- ($p1 + 5))
    				$name = StringReplace($name, "_", " ")
    				If $cd1 = "" Then
    					$cd1 = $drv & ":"
    					$cd1_name = $name
    				Else
    					$cd2 = $drv & ":"
    					$cd2_name = $name
    				EndIf
    				$p3 = StringInStr($val, "#", 0, 2)
    				For $i = $p3 - 1 To $p2 Step - 1
    					If StringMid($val, $i, 1) <> "_" Then
    						$pos_fw_end = $i
    						ExitLoop
    					EndIf
    				Next
    				For $i = $pos_fw_end To $p2 Step - 1
    					If StringMid($val, $i, 1) = "_" Then
    						$pos_fw_begin = $i+1
    						$fw_len = $pos_fw_end - $pos_fw_begin +1
    						ExitLoop
    					EndIf
    				Next
    				$cd_fw = "v." & StringMid($val, $pos_fw_begin, $fw_len)
    				If $cd1_fw = "" Then
    					$cd1_fw = $cd_fw
    				Else
    					$cd2_fw = $cd_fw
    				EndIf
    			EndIf
    		EndIf
    		$p2 = 0
    	Next
    	If $cd1_name = "no_drive" And $cd2_name = "no_drive" Then
    		SetError(1)
    		Return False
    	EndIf
    	If $cd2_name = "no_drive" And $cd_pos = 2 Then
    		SetError(2)
    		Return False
    	EndIf
    	Select
    		Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 1
    			Return $cd1
    		Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 2
    			Return $cd1_name
    		Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 3
    			Return $cd1_fw
    		Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 4
    			Return $cd1 & " " & $cd1_name
    		Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 5
    			Return $cd1 & " " & $cd1_name & " " & $cd1_fw
    		Case $cd_pos = 2 And $cd_info_type = 1
    			Return $cd2
    		Case $cd_pos = 2 And $cd_info_type = 2
    			Return $cd2_name
    		Case $cd_pos = 2 And $cd_info_type = 3
    			Return $cd2_fw
    		Case $cd_pos = 2 And $cd_info_type = 4
    			Return $cd2 & " " & $cd2_name
    		Case $cd_pos = 2 And $cd_info_type = 5
    			Return $cd2 & " " & $cd2_name & " " & $cd2_fw
    		Case $cd_pos = 3 And $cd_info_type = 1
    			Return $cd1 & " | " & $cd2
    		Case $cd_pos = 3 And $cd_info_type = 2
    			Return $cd1_name & " | " & $cd2_name
    		Case $cd_pos = 3 And $cd_info_type = 3
    			Return $cd1_fw & " | " & $cd2_fw
    		Case $cd_pos = 3 And $cd_info_type = 4
    			Return $cd1 & " " & $cd1_name & " | " & $cd2 & " " & $cd2_name
    		Case $cd_pos = 3 And $cd_info_type = 5
    			Return $cd1 & " " & $cd1_name & " " & $cd1_fw & " | " & $cd2 & " " & $cd2_name & " " & $cd2_fw
    	EndSelect
    EndFunc   ;==>_GetCdDriveInfo
    Alles anzeigen
  • CD/DVD-Laufwerke erkennen (open-close)

    • BugFix
    • 30. Mai 2006 um 22:26

    Eigentlich wollte ich nur 'CDTray' testen.
    Daraus geworden ist jetzt ein kleines Programm, dass automatisch die physikalischen CD/DVD-Laufwerke sucht mit Laufwerksbuchstaben und korrekter Bezeichnung.
    Vielleicht hab ich auch das Fahrrad mal wieder neu erfunden - aber Spaß gemacht hats trotzdem. :D
    Geschrieben mit der aktuellen Beta.

    Spoiler anzeigen
    C
    #include <String.au3>
    #include <GuiConstants.au3>
    
    
    $cd1 = ""
    $cd1_name = ""
    $cd2 = ""
    $cd2_name = ""
    $p2 = 0
    
    
    For $a = 68 to 90
    	$lw = Chr($a)
    	$reg = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices","\DosDevices\" & $lw & ":")
    	$wert = ""
    	$name = ""
    	For $i = 1 To StringLen($reg)-2 Step 2
    		$tmp = _HexToString(StringMid($reg,$i,2))
    		If $tmp <> "" Then
    			$wert = $wert & $tmp	
    		EndIf
    	Next
    	$p1 = StringInStr($wert, "#")+1
    	$type = StringMid($wert, $p1, 5)
    	If $type = "CdRom" Then
    		$p2 = StringInStr($wert, "__")
    		If $p2 > 6 Then
    			$name = StringMid($wert, $p1+5, $p2-($p1+5))
    			$name = StringReplace($name,"_"," ")
    			If $cd1 = "" Then
    				$cd1 = $lw & ":"
    				$cd1_name = $name
    			Else
    				$cd2 = $lw & ":"
    				$cd2_name = $name
    			EndIf
    		EndIf	
    	EndIf
    	$p2 = 0
    Next
    
    
    GuiCreate("CD/DVD - Laufwerke", 540, 139,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
    $Group_1 = GuiCtrlCreateGroup("Laufwerk", 20, 20, 270, 100)
    $Radio_2 = GuiCtrlCreateRadio($cd1 & "   " & $cd1_name, 40, 50, 200, 20)
    GUICtrlSetState($Radio_2,$gui_checked)
    $Radio_3 = GuiCtrlCreateRadio($cd2 & "   " & $cd2_name, 40, 80, 200, 20)
    $Group_4 = GuiCtrlCreateGroup("Schublade", 310, 20, 120, 100)
    $Button_5 = GuiCtrlCreateButton("Öffnen", 330, 50, 80, 20)
    GUICtrlSetState(-1,$GUI_FOCUS)
    $Button_6 = GuiCtrlCreateButton("Schließen", 330, 80, 80, 20)
    $Button_7 = GuiCtrlCreateButton("Ende", 450, 100, 70, 20)
    $Pic_8 = GuiCtrlCreatePic(@ScriptDir & "\DVD_Lw_68x60.jpg", 450, 27, 68, 60)
    
    
    GuiSetState()
    While 1
    	$reader = GUICtrlRead($Radio_2)
    	$writer = GUICtrlRead($Radio_3)
    	$msg = GuiGetMsg()
    	If $reader = 1 Then
    		$lw = $cd1
    	EndIf
    	If $writer = 1 Then
    		$lw = $cd2
    	EndIf
    	Select
    	Case $msg = $Button_5
    		CDTray($lw, "open")	
    	Case $msg = $Button_6
    		CDTray($lw, "closed")
    	Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_7
    		ExitLoop
    	EndSelect
    WEnd
    Exit
    Alles anzeigen
  • Beta-Version in SciTE aktivieren

    • BugFix
    • 28. Mai 2006 um 14:17

    Vielen Dank und schönen Sonntag noch!


    Edit:
    Ja, ging ganz einfach - erst Beta installieren, dann die neueste Version von SciTE installieren (erkennt die alte Installation und macht ein Update) --> Fertig!

  • Beta-Version in SciTE aktivieren

    • BugFix
    • 28. Mai 2006 um 14:09

    Hallo,
    ich habe mir die Beta-Version von Autoit installiert und möchte sie nun gern in SciTE 'zum Leben erwecken'.
    In den 'au3.properties' habe ich im Kapitel '# 0 Beta RUN' die auskommentierte Zeile ';command.0.*.au3=$(autoit3dir)\beta\autoit3.exe /ErrorStdOut "$(FilePath)"' freigegeben.
    Unklar ist mir aber, wie ich SciTE dazu bewegen kann die neuen Funktionen in die Autovervollständigung zu übernehmen.

  • Konvertierung Datumsformate

    • BugFix
    • 27. Mai 2006 um 22:21

    Hi, nach langer Zeit mal wieder was von mir.
    Hintergrund:
    Ich arbeite in einer Firma, die u. a. Medizin. Software vertreibt. Diese stammt aus den USA und ist dadurch sowohl in eglischen als auch deutsche Versionen am Markt.
    Ich hab nun ein kleines Prog geschrieben um Inhaltsverzeichnisse von Datensicherungen zu erstellen mit Auflistung Patient und Meßdatum.
    Dabei ist mir erstmals aufgefallen, dass es an deutschen und amerikanischen Datumsformaten zusammen 20 ! Variationen gibt. Um hier mit meinem Prog unabhängig zu sein brauchte ich also eine Konvertierungsfunktion. Vielleicht ist sie ja auch jemand anderem von Nutzen.

    Code
    ;===============================================================================
    ;
    ; Function Name:   	_MultiDateToNorm()
    ;
    ; Description:      Konvertiert folgende Datumsformate: 
    ;					(T)T.(M)M.(JJ)JJ		(deutsch)
    ;					(M)M/(T)T/(JJ)JJ	  	(amerikanisch)
    ;					(T)T-Mon-(JJ)JJ			(amerikanisch, lang)
    ;
    ; Syntax:			_MultiDateToNorm($date,[$s_sort])
    ;
    ; Parameter:		$date  - zu konvertierendes Datum in einem der angeführten Formate
    ;					optional: 
    ;					$s_sort - Vorgabe = 0 (inaktiv); 1 für Ausgabe sortierbarer String
    ;
    ; Return Value:		(TT.MM.JJJJ); optional (JJJJ-MM-TT)
    ;
    ; Author:			BugFix (bug_fix@web.de)
    ;
    ;===============================================================================
    Func _MultiDateToNorm($date,$s_sort = 0)
    	If StringMid($date,2,1) = "." Then				; Tag dt. einstellig ?
    		$date = "0" & $date							; Vornull Tag
    	EndIf
    	If StringMid($date,2,1) = "/" Then				; Monat amerik. einstellig ?
    		$date = "0" & $date							; Vornull Monat
    	EndIf
    	If StringMid($date,2,1) = "-" Then				; Tag amerik. lang einstellig ?
    		$date = "0" & $date							; Vornull Tag
    	EndIf
    	If StringMid($date,5,1) = "." Then				; Monat dt. einstellig ?
    		$tmp = StringTrimLeft($date,3)
    		$date = StringLeft($date,3) & "0" & $tmp	; Vornull Monat
    	EndIf
    	If StringMid($date,5,1) = "/" Then				; Tag amerik. einstellig ?
    		$tmp = StringTrimLeft($date,3)
    		$date = StringLeft($date,3) & "0" & $tmp	; Vornull Tag
    	EndIf
    	If StringLen($date) = 8 Or StringLen($date) = 9 Then	; Jahr 2-stellig ?
    		$strJJ = StringRight($date,2)				; Zeichen für Jahr selektieren
    		$date = StringTrimRight($date,2)			; beide Zeichen für Jahr abschneiden
    		If $strJJ < 30 Then						
    			$strJH = "20"							; 00 bis 29 sind 20..
    		Else
    			$strJH = "19"							; 30 bis 99 sind 19..
    		EndIf
    		$date = $date & $strJH & $strJJ				; Jahr jetzt 4-stellig
    	EndIf
    	Select
    	Case StringMid($date,3,1) = "/"					; amerik. Format "MM/TT/JJJJ" ?
    		$strMM = StringLeft($date,2)
    		$strTT = StringMid($date, 4,2)
    		$date = $strTT & "." & $strMM & "." & StringRight($date,4)
    	Case StringMid($date,3,1) = "-"					;amerik. Format "TT-Mon-JJJJ" ?
    		$strTT = StringLeft($date,2)
    		$strMM = StringUpper(stringmid($date,4,3))
    		Select
    		Case $strMM = "JAN"
    			$strMM = "01"
    		Case $strMM = "FEB"
    			$strMM = "02"
    		Case $strMM = "MAR"
    			$strMM = "03"
    		Case $strMM = "APR"
    			$strMM = "04"
    		Case $strMM = "MAY"
    			$strMM = "05"
    		Case $strMM = "JUN"
    			$strMM = "06"
    		Case $strMM = "JUL"
    			$strMM = "07"
    		Case $strMM = "AUG"
    			$strMM = "08"
    		Case $strMM = "SEP"
    			$strMM = "09"
    		Case $strMM = "OCT"
    			$strMM = "10"
    		Case $strMM = "NOV"
    			$strMM = "11"
    		Case $strMM = "DEC"
    			$strMM = "12"
    		EndSelect
    		$date = $strTT & "." & $strMM & "." & StringRight($date,4)
    	EndSelect
    	If $s_sort = 1 Then									; Optionsschalter gesetzt ?
    		$date = StringRight($date,4) & "-" & StringMid($date,4,2) & "-" & StringMid($date,1,2) 	; als sortierbarer String
    	EndIf
    	Return $date
    EndFunc ;==>_MultiDateToNorm()
    Alles anzeigen

    Edit:
    Ich hab die Funktion noch etwas erweitert. Enthalten ist jetzt ein optionaler Schalter um die Ausgabe als sortierbarer String (JJJJ-MM-TT) zu erreichen. In ListView-Feldern kann man Datumsangaben nur so vernüftig sortieren.
    Abgeändert habe ich auch die Zuordnung des Jahrhunderts zur Jahreszahl. Die war bisher speziell für mein Programm konfiguriert - jetzt hab ich sie wie in Windows üblich verwendet (..30 bis ..99 = 19.. / ..00 bis ..29 = 20.. ).

    Wer es nur mal probieren möchte - im Code habe ich jetzt eine GUI zum Testen vorangestellt.

  • BugFix

    • BugFix
    • 18. März 2006 um 11:38

    Hi, ich bin wahrscheinlich hier der totale Grufti :D . Die ersten Datenträger, die ich kennen lernte hießen Lochkarten und waren damals das non plus ultra :] . Ich war da so etwa 10 Jahre und sofort fasziniert.
    Ich stamme aus der ehemaligen DDR und hatte dann das Glück Anfang der 80'er Jahre einen Computerbausatz zu erstehen (64 kB RAM !!, externer Datenspeicher-Kasettenrecorder). Ja, dann gings los, Basicprogrammierung im schönsten Spaghetticode. Ich durfte auch im Betrieb an einem PC arbeiten. Da lief die lizenzfrei gekupferte Version von dBase III, hieß im Osten REDABAS :] .
    Nach der Wende machte ich dann eine Umschulung zum EDV-Kaufmann. Während der Ausbildung lernten wir dann ordentlich strukturiert zu programmieren (Turbo-Pascal, Fortran), leider aber noch keine objektorientierte Programmierung. Das habe ich dann später mit Learning by doing nachgeholt (VBA).
    Allerdings lassen mir mein Job und meine Familie kaum Zeit diesem Hobby intensiv und regelmäßig nachzugehen :( .
    Somit beschränkt sich das immer auf das Erstellen von Applikationen, die ich hauptsächlich im betrieblichen Umfeld brauche.

  • Script ausführen ohne Icon im Systray

    • BugFix
    • 16. März 2006 um 17:58

    @all
    Danke für eure schnellen Antworten!

    Die Suche hatte ich übrigens bemüht, sowohl hier als auch in den anderen Autoit-Foren. Aber zu 'systray' und 'hide icon' war nichts entsprechendes zu finden.
    In der Hilfe hatte ich auch nach 'systray' statt nur 'tray' gesucht. Darum war ich nicht fündig. Hab wohl 'ne Veranlagung Dinge zu komplizieren :rolleyes:

  • Script ausführen ohne Icon im Systray

    • BugFix
    • 16. März 2006 um 08:43

    Hallo,
    ist es eigentlich möglich ein Script auszuführen, ohne dass ein Icon im Systray aktiv wird?
    Das Problem ist, dass ein einfacher Klick auf das Icon genügt um das Script pausieren zu lassen (oder läßt sich das evtl. verhindern - wenn ja, wie?).

  • Fenster-Titel zur Laufzeit ermitteln ?

    • BugFix
    • 19. Februar 2006 um 13:44

    Genau das suchte ich. Danke.
    Hatte die Funktionsreferenz gar nicht im Einzelnen durchforstet, sondern der Faulheit halber nur die Hilfe mit Stichwort 'window' durchsucht aber nur WinGetHandle() gefunden.

  • Fenster-Titel zur Laufzeit ermitteln ?

    • BugFix
    • 19. Februar 2006 um 10:40

    Hallo,
    hab schon mal alle autoit-Foren durchforstet aber dazu nichts gefunden. Hat schon mal jemand versucht eine Func zu kreieren mit der ein Fenstertitel zur Laufzeit bestimmt werden kann, so in der Art: _TitleWinActiv() ?
    Falls ja brauch ich nicht versuchen das Fahrrad nochmal zu erfinden. ;)
    Wenn nicht hab ich doch mal wieder 'ne lohnenswerte Aufgabe. :D

  • Wochentag- Feiertagsermittlung

    • BugFix
    • 18. Februar 2006 um 19:32

    Hier das Script:

  • Wochentag- Feiertagsermittlung

    • BugFix
    • 18. Februar 2006 um 19:29

    Hallo,
    das hier waren meine ersten Gehversuche mit AutoIt. Ermittlung eines beliebigen Wochentages mit der Formel von Christian Zeller und Berechnung (fast) aller Feiertage (fix und variabel) Deutschlands.
    Ich bin absolut begeistert von den Möglichkeiten, die diese Scriptsprache bietet. Das folgende Prog hab ich vergleichsweise auch mal in VB geschrieben. Die fertige EXE mit allen notwendigen Bibliotheken bringt es auf runde 5 MB! Das gleiche Ergebnis mit AutoIt ca. 130 kB!! - Und keine Installation notwendig.

    Edit 13.12.2009:
    Ich habe die Funktion _Feiertage() (aus Post #4) erweitert um den Gültigkeitsbereich. Bundeseinheitliche Gesetzliche Feiertage sind mit BG markiert, regional unterschiedliche gesetzliche Feiertage mit den ISO-Kürzeln der jeweiligen Bundesländer (BB, BE, BY...).
    Die Daten können jetzt wahlweise gegliedert nach fixen und variablen Feiertagen (innerhalb sortiert) oder alle Feiertage gemeinsam sortiert ausgegeben werden.

    Edit 18.04.2009:
    Fehler bei falscher Datumswahl (31.06. etc.) gefixt

    Edit 17.04.2009:
    Nach langer Zeit habe ich mich mal rangesetzt und dieses Erstlingswerk von mir mal auf einen aktuellen Stand gebracht, sowohl von der AutoIt-Version her, als auch programmiertechnisch (schön geschrumpft).

    Edit 17.12.2012:
    Da es thematisch hierher passt, folgende Funktion zusätzlich: _DateToNameWeekDayGER( )
    Es wird der deutsche Wochentagsname in Lang- oder Kurzform für ein bestimmtes Datum zurückgegeben.

    _DateToNameWeekDayGER
    [autoit]

    #include <Date.au3>
    ;===============================================================================
    ; Function Name....: _DateToNameWeekDayGER
    ; Description......: Gibt den Namen des Wochentags (lang od. kurz) für ein übergebenes Datum zurück
    ; Parameter(s).....: $_sDate Datumstring in der Form "JJJJ/MM/TT"; "-1" (Standard) für Heute
    ; .................: $_iShort "0" (Standard) gibt den Langnamen, "1" den Kurznamen zurück
    ; Requirement(s)...: #include <Date.au3>
    ; Return Value(s)..: Erfolg Rückgabe deutscher Wochentagsname (Lang- od. Kurzform)
    ; .................: Fehler Leerstring u. @error = 1 Datumstring enthält ungültiges Datum
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _DateToNameWeekDayGER($_sDate=-1, $_iShort=0)
    If $_sDate = -1 Then $_sDate = @YEAR & '/' & @MON & '/' & @MDAY
    If Not _DateIsValid($_sDate) Then Return SetError(1,0,'')
    Local $aWDay[8][2] = [[7],['Montag','Mo'],['Dienstag','Di'],['Mittwoch','Mi'],['Donnerstag','Do'],['Freitag','Fr'],['Sonnabend','Sa'],['Sonntag','So']]
    Local $aSplit = StringSplit($_sDate, '/')
    Return $aWDay[_DateToDayOfWeekISO($aSplit[1], $aSplit[2], $aSplit[3])][$_iShort]
    EndFunc ;==>_DateToNameWeekDayGER

    [/autoit]


    Und hier nun das Ergebnis:

    Spoiler anzeigen
    [autoit]

    ; ----------------------------------------------------------------------------
    ; AutoIt Version: 3.3.0.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 <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <Date.au3>
    #include <Array.au3>
    Opt("GUIOnEventMode", 1)
    Global $aRadioT[31], $aRadioM[12], $aHDays, $aLabel[32][2], $x, $y

    [/autoit] [autoit][/autoit] [autoit]

    #region - GUI-Definition
    $gui = GUICreate("Wochen- und Feiertagsbestimmung", 680, 485, -1, -1)
    GUISetBkColor(0xFFFACD)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'Ende')
    $Label_1 = GUICtrlCreateLabel("Bestimmen Sie den Wochentag ! (gültig: 1583 - 8201)", 200, 10, 280, 20)
    GUICtrlSetColor($Label_1, 0xFF0000)
    $aktDatum = GUICtrlCreateLabel(@MDAY & "." & @MON & "." & @YEAR, 620, 10, 60, 20)
    ;Gruppe Optionsfelder zur Datumsauswahl
    $Group_T = GUICtrlCreateGroup(" Tag ", 15, 25, 650, 60)
    $x = 20
    For $i = 1 To 31
    $R_Name = $i
    If $i < 16 Then
    If $i < 10 Then $R_Name = "0" & $i
    $aRadioT[$i-1] = GUICtrlCreateRadio($R_Name, $x, 45, 30, 15)
    If $i = 15 Then
    $x = 20
    Else
    $x += 40
    EndIf
    Else
    $aRadioT[$i-1] = GUICtrlCreateRadio($R_Name, $x, 60, 30, 15)
    $x += 40
    EndIf
    If $i = @MDAY Then GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetOnEvent(-1, "_RunData")
    Next
    GUICtrlCreateGroup ("",-99,-99,1,1)
    $Group_M = GUICtrlCreateGroup(" Monat ", 15, 100, 255, 60)
    $x = 20
    For $i = 1 To 12
    $R_Name = $i
    If $i < 10 Then $R_Name = "0" & $i
    If $i < 7 Then
    $aRadioM[$i-1] = GUICtrlCreateRadio($R_Name, $x, 120, 30, 15)
    $x += 40
    Else
    If $i = 7 Then $x = 20
    $aRadioM[$i-1] = GUICtrlCreateRadio($R_Name, $x, 135, 30, 15)
    $x += 40
    EndIf
    If $i = @MON Then GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetOnEvent(-1, "_RunData")
    Next
    GUICtrlCreateGroup ("",-99,-99,1,1)
    $MsgTag = GUICtrlCreateLabel("", 340, 100, 200, 20)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label_4 = GUICtrlCreateLabel("Jahr", 340, 122, 40, 20)
    $But_minus = GUICtrlCreateButton("-", 406, 123, 15, 15)
    GUICtrlSetOnEvent(-1, "Minus")
    $But_plus = GUICtrlCreateButton("+", 468, 123, 15, 15)
    GUICtrlSetOnEvent(-1, "Plus")
    $InYear = GUICtrlCreateInput(@YEAR, 425, 120, 40, 20, $SS_CENTER)
    GUICtrlSetOnEvent(-1, "_RunData")
    $Ende = GUICtrlCreateButton("Ende", 615, 105, 50, 20)
    GUICtrlSetOnEvent(-1, "Ende")
    $Schalt = GUICtrlCreateLabel("", 500, 122, 80, 20)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label_9 = GUICtrlCreateLabel("Wochentag:", 340, 145, 90, 20)
    $WTag = GUICtrlCreateLabel("", 425, 145, 90, 20)
    GUICtrlSetColor(-1, 0x0000FF)
    $L_Feiertage = GUICtrlCreateLabel("Die Feiertage dieses Jahres", 265, 175, 150, 20)
    GUICtrlSetColor(-1, 0xFF0000)
    $L_Fix = GUICtrlCreateLabel("Unveränderlich:", 70, 200, 90, 20)
    GUICtrlSetColor(-1, 0xFF0000)
    $L_Variabel = GUICtrlCreateLabel("Veränderlich (gültig: 1583 - 2999):", 380, 200, 170, 20)
    GUICtrlSetColor(-1, 0xFF0000)
    ; Fixe Feiertage:
    $y = 220
    For $i = 0 to 10
    $aLabel[$i][0] = GUICtrlCreateLabel('', 80, $y, 180, 17)
    $aLabel[$i][1] = GUICtrlCreateLabel('date', 280, $y, 100, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $y += 15
    Next
    ; Adventstage
    GUICtrlCreateLabel("Adventstage:", 185, 420, 80, 20)
    GUICtrlSetColor(-1, 0xFF0000)
    $x = 80
    For $i = 28 To 31
    $aLabel[$i][0] = GUICtrlCreateLabel('', $x, 440, 60, 34)
    GUICtrlSetColor(-1, 0x0000FF)
    $x += 70
    Next
    ; Variable Feiertage:
    $y = 220
    For $i = 11 to 27
    $aLabel[$i][0] = GUICtrlCreateLabel('', 390, $y, 180, 17)
    $aLabel[$i][1] = GUICtrlCreateLabel('', 570, $y, 70, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $y += 15
    Next
    _RunData()
    GUISetState()
    #endregion - GUI-Definition

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    #region - Funktionen
    Func Ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Minus()
    GUICtrlSetData($InYear, GUICtrlRead($InYear) - 1)
    _RunData()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Plus()
    GUICtrlSetData($InYear, GUICtrlRead($InYear) + 1)
    _RunData()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _RunData()
    $aHDays = _Feiertage(GUICtrlRead($InYear))
    If _DateIsLeapYear(GUICtrlRead($InYear)) Then
    GUICtrlSetData($Schalt, 'Schaltjahr')
    Else
    GUICtrlSetData($Schalt, '')
    EndIf
    For $i = 0 to 31
    GUICtrlSetData($aLabel[$i][0], $aHDays[$i][0] & ' ' & $aHDays[$i][1])
    If $i > 27 Then ContinueLoop
    GUICtrlSetData($aLabel[$i][1], _
    _GetDateStr(_DateToDayOfWeek(StringRight($aHDays[$i][0],4), StringMid($aHDays[$i][0],4,2), StringLeft($aHDays[$i][0],2))))
    Next
    _WTag()
    EndFunc ;==> _RunData

    [/autoit] [autoit][/autoit] [autoit]

    Func _WTag()
    Local $day, $mon
    GUICtrlSetData($MsgTag, '')
    For $i = 0 To 30
    If BitAND(GUICtrlRead($aRadioT[$i]), $GUI_CHECKED) Then
    $day = ControlGetText($gui, '', $aRadioT[$i])
    ExitLoop
    EndIf
    Next
    For $i = 0 To 11
    If BitAND(GUICtrlRead($aRadioM[$i]), $GUI_CHECKED) Then
    $mon = ControlGetText($gui, '', $aRadioM[$i])
    ExitLoop
    EndIf
    Next
    If _DateIsLeapYear(GUICtrlRead($InYear)) Then
    If $mon = 2 and $day > 29 Then
    $day = 29
    GUICtrlSetState($aRadioT[28],$gui_checked)
    GUICtrlSetData($MsgTag,"'Tag' für Berechnung auf "& $day & " korrigiert!")
    EndIf
    Else
    If $mon = 2 and $day > 28 Then
    $day = 28
    GUICtrlSetState($aRadioT[27],$gui_checked)
    GUICtrlSetData($MsgTag,"'Tag' für Berechnung auf "& $day & " korrigiert!")
    EndIf
    EndIf
    If ($mon = 4 Or $mon = 6 Or $mon = 9 Or $mon = 11 ) And $day > 30 Then
    $day = 30
    GUICtrlSetData($MsgTag,"'Tag' für Berechnung auf "& $day & " korrigiert!")
    GUICtrlSetState($aRadioT[29],$gui_checked)
    EndIf
    GUICtrlSetData($WTag, _GetDateStr(_DateToDayOfWeek(GUICtrlRead($InYear), $mon, $day)))
    EndFunc ;==>_WTag

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetDateStr($num)
    Switch $num
    Case 1
    Return "Sonntag"
    Case 2
    Return "Montag"
    Case 3
    Return "Dienstag"
    Case 4
    Return "Mittwoch"
    Case 5
    Return "Donnerstag"
    Case 6
    Return "Freitag"
    Case 7
    Return "Samstag"
    EndSwitch
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Funktion _Feiertage($Jahr)
    ;
    ; gibt die Feiertage des übergebenen Jahres
    ; als sortiertes Array[TT.MM.JJJJ od. JJJJ/MM/TT][Feiertag] zurück (gegliedert fix/variabel)
    ; $DateTyp 1 - Datum als TT.MM.JJJJ (Standard)
    ; 0 - Datum als JJJJ/MM/TT
    ; Autor BugFix ([email='bug_fix@web.de'][/email])
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func _Feiertage($year, $DateTyp=1)
    Local $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp
    Local $HDays[32][2], $a, $b, $c, $d, $e, $H1, $H2, $N, $M
    ;fixe Feiertage
    $HDays[0][0] = $year & "/01/01\Neujahr"
    $HDays[1][0] = $year & "/01/06\Heilige Drei Könige"
    $HDays[2][0] = $year & "/02/14\Valentinstag"
    $HDays[3][0] = $year & "/05/01\Maifeiertag"
    $HDays[4][0] = $year & "/10/03\Tag der Deutschen Einheit"
    $HDays[5][0] = $year & "/10/31\Reformationstag"
    $HDays[6][0] = $year & "/11/01\Allerheiligen"
    $HDays[7][0] = $year & "/12/24\Heiligabend"
    $HDays[8][0] = $year & "/12/25\1. Weihnachtsfeiertag"
    $HDays[9][0] = $year & "/12/26\2. Weihnachtsfeiertag"
    $HDays[10][0] = $year & "/12/31\Silvester"
    ;variable Feiertage
    $a = Mod($year, 19)
    $b = Mod($year, 4)
    $c = Mod($year, 7)
    $H1 = Int($year / 100)
    $H2 = Int($year / 400)
    $N = 4 + $H1 - $H2
    $M = 15 + $H1 - $H2 - Floor (Int((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
    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][0] = $WFastDate & "\Weiberfastnacht"
    $HDays[12][0] = $RosDat & "\Rosenmontag"
    $HDays[13][0] = $FastDat & "\Fastnacht"
    $HDays[14][0] = $AschDat & "\Aschermittwoch"
    $HDays[15][0] = $GrDoDat & "\Gründonnerstag"
    $HDays[16][0] = $KarDat & "\Karfreitag"
    $HDays[17][0] = $OSaDat & "\Ostersamstag"
    $HDays[18][0] = $OSoDat & "\Ostersonntag"
    $HDays[19][0] = $OMoDat & "\Ostermontag"
    $HDays[20][0] = $HiFaDat & "\Christi Himmelfahrt"
    $HDays[21][0] = $PfSoDat & "\Pfingstsonntag"
    $HDays[22][0] = $PfMoDat & "\Pfingstmontag"
    $HDays[23][0] = $MutterDat & "\Muttertag"
    $HDays[24][0] = $FroDat & "\Fronleichnam"
    $HDays[25][0] = $ErnteDat & "\Erntedankfest"
    $HDays[26][0] = $BuBDat & "\Buß- und Bettag"
    $HDays[27][0] = $TotSoDat & "\Totensonntag"
    $HDays[28][0] = $1AdvDat & "\1. Advent"
    $HDays[29][0] = $2AdvDat & "\2. Advent"
    $HDays[30][0] = $3AdvDat & "\3. Advent"
    $HDays[31][0] = $4AdvDat & "\4. Advent"
    _ArraySort($HDays, 0, 0, 10)
    _ArraySort($HDays, 0, 11)
    For $i = 0 To 31
    If $DateTyp Then ; Datum konvertieren zu TT.MM.JJJJ
    $tmp = StringSplit($HDays[$i][0], "\", 2)
    $HDays[$i][0] = StringMid($tmp[0], 9) & "." & StringMid($tmp[0], 6, 2) & "." & StringMid($tmp[0], 1, 4)
    $HDays[$i][1] = $tmp[1]
    Else
    $HDays[$i][1] = StringTrimLeft($HDays[$i][0], 11)
    $HDays[$i][0] = StringLeft($HDays[$i][0], 10)
    EndIf
    Next
    Return $HDays
    EndFunc ;==>_Feiertage
    #endregion - Funktionen

    [/autoit]
    _Feiertage( )
    [autoit]

    $ret = _Feiertage(2009, 1, 1, 1)
    _ArrayDisplay($ret)

    [/autoit] [autoit][/autoit] [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Funktion _Feiertage($Jahr)
    ;
    ; gibt die Feiertage des übergebenen Jahres
    ; als sortiertes Array[TT.MM.JJJJ od. JJJJ/MM/TT][Feiertag][Geltungsbereich][opt. Wochentag] zurück
    ; Geltungsbereich Leerstring - kein offizieller Feiertag
    ; BG - Bundesweit Gesetzlich
    ; Regionalkennzeichen: BB-Brandenburg BE-Berlin BW-Baden-Württemberg BY-Bayern
    ; HB-Bremen HE-Hessen HH-Hamburg MV-Mecklenburg-Vorpommern
    ; NI-Niedersachsen NW-Nordrhein-Westfalen RP-Rheinland-Pfalz
    ; SH-Schleswig-Holstein SL-Saarland SN-Sachsen
    ; ST-Sachsen-Anhalt TH-Thüringen
    ; $DateTyp 1 - Datum als TT.MM.JJJJ (Standard)
    ; 0 - Datum als JJJJ/MM/TT
    ; $wDay 0 - keine Rückgabe Wochentag (Standard)
    ; 1 - Rückgabe Wochentag ($array[n][3])
    ; $sort 0 - gegliedert fix/variabel (Standard), innerhalb sortiert
    ; 1 - komplett sortiert
    ; Autor BugFix ([email='bug_fix@web.de'][/email])
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    #include-once
    #include <Array.au3>
    #include <Date.au3>
    Func _Feiertage($year, $DateTyp=1, $wDay=0, $sort=0)
    Local $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp
    Local $HDays[33][3], $a, $b, $c, $d, $e, $H1, $H2, $N, $M
    ;fixe Feiertage
    $HDays[0][0] = $year & "/01/01\Neujahr\GB"
    $HDays[1][0] = $year & "/01/06\Heilige Drei Könige\BW BY ST"
    $HDays[2][0] = $year & "/02/14\Valentinstag\"
    $HDays[3][0] = $year & "/05/01\Maifeiertag\GB"
    $HDays[4][0] = $year & "/08/15\Mariä Himmelfahrt\BY SL"
    $HDays[5][0] = $year & "/10/03\Tag der Deutschen Einheit\GB"
    $HDays[6][0] = $year & "/10/31\Reformationstag\BB MV SN ST TH"
    $HDays[7][0] = $year & "/11/01\Allerheiligen\BW BY NW RP SL"
    $HDays[8][0] = $year & "/12/24\Heiligabend\"
    $HDays[9][0] = $year & "/12/25\1. Weihnachtsfeiertag\GB"
    $HDays[10][0] = $year & "/12/26\2. Weihnachtsfeiertag\GB"
    $HDays[11][0] = $year & "/12/31\Silvester\"
    ;variable Feiertage
    $a = Mod($year, 19)
    $b = Mod($year, 4)
    $c = Mod($year, 7)
    $H1 = Int($year / 100)
    $H2 = Int($year / 400)
    $N = 4 + $H1 - $H2
    $M = 15 + $H1 - $H2 - Floor (Int((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
    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[12][0] = $WFastDate & "\Weiberfastnacht\"
    $HDays[13][0] = $RosDat & "\Rosenmontag\"
    $HDays[14][0] = $FastDat & "\Fastnacht\"
    $HDays[15][0] = $AschDat & "\Aschermittwoch\"
    $HDays[16][0] = $GrDoDat & "\Gründonnerstag\"
    $HDays[17][0] = $KarDat & "\Karfreitag\BG"
    $HDays[18][0] = $OSaDat & "\Ostersamstag\"
    $HDays[19][0] = $OSoDat & "\Ostersonntag\"
    $HDays[20][0] = $OMoDat & "\Ostermontag\BG"
    $HDays[21][0] = $HiFaDat & "\Christi Himmelfahrt\BG"
    $HDays[22][0] = $PfSoDat & "\Pfingstsonntag\"
    $HDays[23][0] = $PfMoDat & "\Pfingstmontag\BG"
    $HDays[24][0] = $MutterDat & "\Muttertag\"
    $HDays[25][0] = $FroDat & "\Fronleichnam\BW BY HE NW RP SL SN TH"
    $HDays[26][0] = $ErnteDat & "\Erntedankfest\"
    $HDays[27][0] = $BuBDat & "\Buß- und Bettag\SN"
    $HDays[28][0] = $TotSoDat & "\Totensonntag\"
    $HDays[29][0] = $1AdvDat & "\1. Advent\"
    $HDays[30][0] = $2AdvDat & "\2. Advent\"
    $HDays[31][0] = $3AdvDat & "\3. Advent\"
    $HDays[32][0] = $4AdvDat & "\4. Advent\"
    If $sort Then
    _ArraySort($HDays)
    Else
    _ArraySort($HDays, 0, 0, 11)
    _ArraySort($HDays, 0, 12)
    EndIf
    If $wDay Then ReDim $HDays[33][4]
    For $i = 0 To 32
    $tmp = StringSplit($HDays[$i][0], "\", 2)
    If $DateTyp Then ; Datum konvertieren zu TT.MM.JJJJ
    $HDays[$i][0] = StringRight($tmp[0],2) & "." & StringMid($tmp[0],6,2) & "." & StringLeft($tmp[0],4)
    If $wDay Then $HDays[$i][3] = _DateToDayOfWeek(StringLeft($tmp[0],4), StringMid($tmp[0],6,2), StringRight($tmp[0],2))
    Else
    $HDays[$i][0] = $tmp[0]
    EndIf
    $HDays[$i][1] = $tmp[1]
    $HDays[$i][2] = $tmp[2]
    If $wDay Then $HDays[$i][3] = _DateToDayOfWeek(StringLeft($tmp[0],4), StringMid($tmp[0],6,2), StringRight($tmp[0],2))
    Next
    Return $HDays
    EndFunc ;==>_Feiertage

    [/autoit]
  • Winwaitactive() mit OR nutzen ?

    • BugFix
    • 18. Februar 2006 um 14:24

    Danke Wolke,
    ich hatte es ähnlich mit SELECT CASE gelöst. Allerdings funktioniert die Zuweisung:

    Code
    $titel1 = winwaitactive(...
    $titel2 = winwaitactive(...


    so nicht, da hier erst "titel1" UND dann auch noch "titel2" aktiv werden muß. (..wait)
    Hab dann "winactive()" auf diese Weise verwendet. Nun klappt es auch. :]

    Code
    $start=0
    While 1
    	$title1=WinActive("Erfassung")
    	$title2=WinActive("Aqusition")
    	Select
    	Case $title1 = 1
    		$start = 1
    	Case $title2 = 1
    		$start = 1
    	EndSelect
    	If $start = 1 Then
    		Anwendung..
    		.....
    	EndIf
    WEnd
    Alles anzeigen


    Hintergrund: Verwendung von Softwareversionen in Englisch und Deutsch - somit unterschiedliche Titel für dasselbe Fenster.

    P.S.
    Kann ich Code auch so posten, dass auch Einrückungen dargestellt werden?

  • Winwaitactive() mit OR nutzen ?

    • BugFix
    • 17. Februar 2006 um 20:46

    Hallo @all,

    gibt es eine Möglichkeit die Funktion winwaitactive() mit OR zu verknüpfen (etwa: winwaitactive("title1" OR "title2"))?
    Wenn ich das so codiere gibt der Syntax-Check keinen Fehler aber die Funktion reagiert weder auf "title1" noch auf "title2". :(
    Habt ihr 'ne Idee für mich?

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™