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

  • Input inhalt löschen

    • BugFix
    • 22. Mai 2015 um 18:48
    Zitat von Silvermoon

    schreibe ich Werte in die Inputbox meine zweite Gui.

    Wenn es DEINE Gui ist, dann setzt du die Daten bitte schön mit GuiCtrlSetData.
    Und vor dem Eintragen neuer Daten brauchst du die alten nicht löschen - die werden überschrieben.

  • Warum mehr Arbeit als nötig? IDENTISCHES AUTOIT auf mehreren PC's

    • BugFix
    • 21. Mai 2015 um 15:29

    Ich nehme an du nutzt Win7.
    Da findest du die Settings hier: C:\Users\USERNAME\AppData\Local\AutoIt v3\SciTE

  • Frage zu einem Script

    • BugFix
    • 21. Mai 2015 um 14:31
    Zitat von BigRox

    aus und du wirst sehen, warum ich die Position des Buttons testen muss.

    ..weil du vergisst, das Label auf DISABLE zu setzen. ;)

    AutoIt
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("MouseCoordMode", 2)
    ; Die GUI erstellen.
    $GUI = GUICreate("Form1", 600, 500, -1, -1)
    GUISetBkColor(0x6791C9)
    ; Ein Label in der GUI erstellen.
    $Label1 = GUICtrlCreateLabel("Nur ein Test", 64, 72, 468, 324, BitOR($SS_CENTER, $SS_SUNKEN, $WS_BORDER), $WS_EX_CLIENTEDGE)
    GUICtrlSetBkColor($Label1, 0x00FF00)
    
    
    ; >> LABEL muss inaktiv sein!!
    GUICtrlSetState($Label1, $GUI_DISABLE)
    
    
    ; Einen Button in dem Label erstellen.
    $Button1 = GUICtrlCreateButton("Klick mich.", 176, 176, 209, 81)
    GUICtrlSetBkColor($Button1, 0xFF0000)
    
    
    ; Die GUI anzeigen.
    GUISetState(@SW_SHOW, $GUI)
    While 1
    	$Msg = GUIGetMsg()
    	Switch $Msg
    		Case $GUI_EVENT_CLOSE
    			ExitLoop
    		Case $Button1
    			ConsoleWrite('CLICK' & @CRLF)
    	EndSwitch
    WEnd
    GUIDelete($GUI)
    Exit
    Alles anzeigen
  • Frage zu einem Script

    • BugFix
    • 21. Mai 2015 um 13:15
    Zitat von BigRox

    Es soll aber nur dann etwas geschehen, wenn ich den Button anklicke.

    Ich verstehe nicht wo das Problem sein soll. Wenn du das, was passieren soll, dem Button zuordnest, brauchst du doch kein Label-Gedöns und irgendwelche Abfragen.

  • Skript funktioniert nur Teilweise, wenn nicht angemeldet

    • BugFix
    • 21. Mai 2015 um 12:56

    Auf Anhieb kann ich nicht sagen wo der Schuh drückt.
    Aber eine Frage:
    Du setzt vor dem PDF-Druck den PDF-Printer als Standarddrucker. Warum sendest du den Druckauftrag dann trotzdem nochmals gezielt an den Drucker ab? Der ist doch dann bereits Default.

    Ich verwende für PDF immer den PDFCreator. Hat eine API-Referenz, ist auch schon im Forum zu einer UDF umgesetzt und die Settings sind so vielfältig, dass kein Wunsch offen bleibt. Und Probleme mit der Formatdarstellung hatte ich bisher nie.

  • Button: 1. -ändern der Farbe- und 2. -Name des Button per Tastatur (Hotkey) erreichen-.

    • BugFix
    • 20. Mai 2015 um 20:11
    Zitat von bazii

    schlussendlich mit der Entertaste auszuführen. Ich hatte zu Anfangs nicht daran gedacht. Ist das denn noch umsetzbar?

    Kein Problem, einfach einen ENTER-Dummy hinzufügen zum Auslösen des Buttons der aktuell den Fokus hat:

    Spoiler anzeigen
    AutoIt
    $hGui = GUICreate('Test')
    $Button_1 = GUICtrlCreateButton('1', 10, 10, 30, 20)
    $Button_2 = GUICtrlCreateButton('2', 50, 10, 30, 20)
    $Button_3 = GUICtrlCreateButton('3', 90, 10, 30, 20)
    $Button_4 = GUICtrlCreateButton('4', 130, 10, 30, 20)
    $Button_5 = GUICtrlCreateButton('5', 170, 10, 30, 20)
    $Button_6 = GUICtrlCreateButton('6', 210, 10, 30, 20)
    $Button_7 = GUICtrlCreateButton('7', 10, 50, 30, 20)
    $Button_8 = GUICtrlCreateButton('8', 50, 50, 30, 20)
    $Button_9 = GUICtrlCreateButton('9', 90, 50, 30, 20)
    $Dummy_Up = GUICtrlCreateDummy()
    $Dummy_Down = GUICtrlCreateDummy()
    $Dummy_Left = GUICtrlCreateDummy()
    $Dummy_Right = GUICtrlCreateDummy()
    $DummyEnter = GUICtrlCreateDummy()
    
    
    Global $iFocusCurrent = $Button_1
    ControlFocus($hGui, '', $Button_1)
    Global $aAccelerators[5][2] = [['{UP}',$Dummy_Up],['{DOWN}',$Dummy_Down],['{LEFT}',$Dummy_Left],['{RIGHT}',$Dummy_Right],['{ENTER}',$DummyEnter]]
    GUISetAccelerators($aAccelerators, $hGui)
    
    
    GUISetState()
    
    
    While True
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case -3
    			Exit
    		Case $Dummy_Up
    			_SetFocus(0,-1)
    		Case $Dummy_Down
    			_SetFocus(0,1)
    		Case $Dummy_Left
    			_SetFocus(-1,0)
    		Case $Dummy_Right
    			_SetFocus(1,0)
    		Case $DummyEnter
    			ControlClick($hGui, '', ControlGetFocus($hGui))
    		Case $Button_1,$Button_2,$Button_3,$Button_4,$Button_5,$Button_6,$Button_7,$Button_8,$Button_9
    			ConsoleWrite('Clicked: ' & ControlGetText($hGui, '', $nMsg) & @CRLF)
    	EndSwitch
    WEnd
    
    
    Func _SetFocus($Spalte, $Zeile)
    	Local Static $aButton[2][6] = [[$Button_1,$Button_2,$Button_3,$Button_4,$Button_5,$Button_6],[$Button_7,$Button_8,$Button_9]]
    	Local Static $iCurrentLine = 0, $iCurrentRow = 0
    	$iCurrentLine += $Zeile
    	$iCurrentLine = $iCurrentLine > 2 ? 2 : ($iCurrentLine < 0 ? 0 : $iCurrentLine)
    	$iCurrentRow += $Spalte
    	If $iCurrentLine = 0 Then
    		$iCurrentRow = $iCurrentRow > 5 ? 5 : ($iCurrentRow < 0 ? 0 : $iCurrentRow)
    	ElseIf $iCurrentLine = 1 Then
    		$iCurrentRow = $iCurrentRow > 2 ? 2 : ($iCurrentRow < 0 ? 0 : $iCurrentRow)
    	EndIf
    	ControlFocus($hGui, '', $aButton[$iCurrentLine][$iCurrentRow])
    EndFunc
    Alles anzeigen
  • Button: 1. -ändern der Farbe- und 2. -Name des Button per Tastatur (Hotkey) erreichen-.

    • BugFix
    • 20. Mai 2015 um 19:43
    Zitat von bazii

    Ein Problem ist noch, dass meine Buttons nun per Mausklick, keine Funktionen mehr ausführen.

    Anhand meines Bsp-Codes kann ich das nicht nachvollziehen. Deshalb weiß ich nicht, wo da bei dir der Fehler entsteht.

  • Button: 1. -ändern der Farbe- und 2. -Name des Button per Tastatur (Hotkey) erreichen-.

    • BugFix
    • 20. Mai 2015 um 18:54
    Zitat von bazii

    Wenn ich jetzt aber die Pfeiltasten drücke, verschwindet meine Gui wie durch ein Lufthauch weggeblasen.

    Ich hatte den Code nochmal editiert, mit einer Fehlerroutine. Wenn du versuchst einen nicht existierenden Arraybereich anzusprechen stürzt natürlich das Programm ab.
    Für deinen Fall muss dass denn so aussehen:

    Spoiler anzeigen
    AutoIt
    $hGui = GUICreate('Test')
    $Button_1 = GUICtrlCreateButton('1', 10, 10, 30, 20)
    $Button_2 = GUICtrlCreateButton('2', 50, 10, 30, 20)
    $Button_3 = GUICtrlCreateButton('3', 90, 10, 30, 20)
    $Button_4 = GUICtrlCreateButton('4', 130, 10, 30, 20)
    $Button_5 = GUICtrlCreateButton('5', 170, 10, 30, 20)
    $Button_6 = GUICtrlCreateButton('6', 210, 10, 30, 20)
    $Button_7 = GUICtrlCreateButton('7', 10, 50, 30, 20)
    $Button_8 = GUICtrlCreateButton('8', 50, 50, 30, 20)
    $Button_9 = GUICtrlCreateButton('9', 90, 50, 30, 20)
    $Dummy_Up = GUICtrlCreateDummy()
    $Dummy_Down = GUICtrlCreateDummy()
    $Dummy_Left = GUICtrlCreateDummy()
    $Dummy_Right = GUICtrlCreateDummy()
    
    
    Global $iFocusCurrent = $Button_1
    ControlFocus($hGui, '', $Button_1)
    Global $aAccelerators[4][2] = [['{UP}',$Dummy_Up],['{DOWN}',$Dummy_Down],['{LEFT}',$Dummy_Left],['{RIGHT}',$Dummy_Right]]
    GUISetAccelerators($aAccelerators, $hGui)
    
    
    GUISetState()
    
    
    While True
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case -3
    			Exit
    		Case $Dummy_Up
    			_SetFocus(0,-1)
    		Case $Dummy_Down
    			_SetFocus(0,1)
    		Case $Dummy_Left
    			_SetFocus(-1,0)
    		Case $Dummy_Right
    			_SetFocus(1,0)
    		Case $Button_1,$Button_2,$Button_3,$Button_4,$Button_5,$Button_6,$Button_7,$Button_8,$Button_9
    			ConsoleWrite('Clicked: ' & ControlGetText($hGui, '', $nMsg) & @CRLF)
    	EndSwitch
    WEnd
    
    
    Func _SetFocus($Spalte, $Zeile)
    	Local Static $aButton[2][6] = [[$Button_1,$Button_2,$Button_3,$Button_4,$Button_5,$Button_6],[$Button_7,$Button_8,$Button_9]]
    	Local Static $iCurrentLine = 0, $iCurrentRow = 0
    	$iCurrentLine += $Zeile
    	$iCurrentLine = $iCurrentLine > 2 ? 2 : ($iCurrentLine < 0 ? 0 : $iCurrentLine)
    	$iCurrentRow += $Spalte
    	If $iCurrentLine = 0 Then
    		$iCurrentRow = $iCurrentRow > 5 ? 5 : ($iCurrentRow < 0 ? 0 : $iCurrentRow)
    	ElseIf $iCurrentLine = 1 Then
    		$iCurrentRow = $iCurrentRow > 2 ? 2 : ($iCurrentRow < 0 ? 0 : $iCurrentRow)
    	EndIf
    	ControlFocus($hGui, '', $aButton[$iCurrentLine][$iCurrentRow])
    EndFunc
    Alles anzeigen
  • [Hilfe]ListView bzw Textdatei durchsuchen

    • BugFix
    • 20. Mai 2015 um 18:14

    Als Anregung kann dir das dienen: IntelliSenseBox

  • Button: 1. -ändern der Farbe- und 2. -Name des Button per Tastatur (Hotkey) erreichen-.

    • BugFix
    • 20. Mai 2015 um 17:31

    Kannst du so lösen:

    Spoiler anzeigen
    AutoIt
    $hGui = GUICreate('Test')
    $Button_A = GUICtrlCreateButton('A', 10, 10, 30, 20)
    $Button_B = GUICtrlCreateButton('B', 50, 10, 30, 20)
    $Button_C = GUICtrlCreateButton('C', 90, 10, 30, 20)
    $Button_D = GUICtrlCreateButton('D', 10, 50, 30, 20)
    $Button_E = GUICtrlCreateButton('E', 50, 50, 30, 20)
    $Button_F = GUICtrlCreateButton('F', 90, 50, 30, 20)
    $Button_G = GUICtrlCreateButton('G', 10, 90, 30, 20)
    $Button_H = GUICtrlCreateButton('H', 50, 90, 30, 20)
    $Button_I = GUICtrlCreateButton('I', 90, 90, 30, 20)
    $Dummy_Up = GUICtrlCreateDummy()
    $Dummy_Down = GUICtrlCreateDummy()
    $Dummy_Left = GUICtrlCreateDummy()
    $Dummy_Right = GUICtrlCreateDummy()
    
    
    ControlFocus($hGui, '', $Button_A)
    Global $aAccelerators[4][2] = [['{UP}',$Dummy_Up],['{DOWN}',$Dummy_Down],['{LEFT}',$Dummy_Left],['{RIGHT}',$Dummy_Right]]
    GUISetAccelerators($aAccelerators, $hGui)
    
    
    GUISetState()
    
    
    While True
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case -3
    			Exit
    		Case $Dummy_Up
    			_SetFocus(0,-1)
    		Case $Dummy_Down
    			_SetFocus(0,1)
    		Case $Dummy_Left
    			_SetFocus(-1,0)
    		Case $Dummy_Right
    			_SetFocus(1,0)
    		Case $Button_A, $Button_B, $Button_C, $Button_D, $Button_E, $Button_F, $Button_G, $Button_H, $Button_I
    			ConsoleWrite('Clicked: ' & ControlGetText($hGui, '', $nMsg) & @CRLF)
    	EndSwitch
    WEnd
    
    
    Func _SetFocus($Spalte, $Zeile)
    	Local Static $aButton[3][3] = [[$Button_A,$Button_B,$Button_C],[$Button_D,$Button_E,$Button_F],[$Button_G,$Button_H,$Button_I]]
    	Local Static $iCurrentLine = 0, $iCurrentRow = 0
    	$iCurrentLine += $Zeile
    	$iCurrentLine = $iCurrentLine > 2 ? 2 : ($iCurrentLine < 0 ? 0 : $iCurrentLine)
    	$iCurrentRow += $Spalte
    	$iCurrentRow = $iCurrentRow > 2 ? 2 : ($iCurrentRow < 0 ? 0 : $iCurrentRow)
    	ControlFocus($hGui, '', $aButton[$iCurrentLine][$iCurrentRow])
    EndFunc
    Alles anzeigen
  • Schnelle Hilfe leichtes Thema

    • BugFix
    • 18. Mai 2015 um 22:00

    Versuchs mal mit absolutem Pfad. Relativer Pfad in der VM könnte evtl. ein Problem sein. Sonst fällt mir da auch nix ein.

  • Button: 1. -ändern der Farbe- und 2. -Name des Button per Tastatur (Hotkey) erreichen-.

    • BugFix
    • 18. Mai 2015 um 20:59

    Wenn du einen Button mit eigenen Eigenschaften haben möchtest, kannst du diesen aus einem Label nachbilden. Da hast du dann recht große Spielmöglichkeiten.
    Ich poste hier mal ein altes Beispielskript mit lauter farbigen Button, die aus Labeln erstellt werden, sich aber auch optisch wie Button verhalten.
    Vielleicht gibt dir das einen Ansatz.

    Spoiler anzeigen
    AutoIt
    #include <GUIConstants.au3>
    ; 15 Colored Buttons Example.au3
    Dim $Key[16]
    Local $Row = 5, $Column = 5, $Color = -1
    Local $BtnColors[16] = [15, '0xff0000', '0x00ff00', 'x0000ff', '0xffff00', '0xffffff', '0xffaa00', '0xaaff00', '0x00aaff', '0xffffaa', '0xdddddd', '0xffee00', '0xccff00', '0x00ddff', '0xffeedd', '0x000000']
    GUICreate("15 Colored Buttons Example", 300, 100, 100, 100)
    
    
    For $x = 1 To 15
        $ret = _GUICtrlCreateColorButton("test" & $x, $Column, $Row, 50, 20, $BtnColors[$x], $Color)
        $Key[$x] = $ret[0]
        $Column += 60
        If $Column > 245 Then $Column = 5
        If $Column == 5 Then $Row += 30
        If $x == 14 Or $Column == 125 Then
            $Color = '0xffffff'
        Else
            $Color = ''
        EndIf
    Next
    GUISetState()
    
    
    Do
        $msg = GUIGetMsg()
    
        For $x = 1 To 15
            If $msg == $Key[$x] Then
                GUICtrlSetStyle($Key[$x], $SS_ETCHEDFRAME)
                MsgBox(0, "colorbutton pressed", "You pressed cb" & $x, 1)
                GUICtrlSetStyle($Key[$x], $SS_NOTIFY + $SS_GRAYRECT)
                ExitLoop
            EndIf
        Next
    Until $msg = $GUI_EVENT_CLOSE
    
    
    ;=============================================================================
    ;
    ; Function Name:   _GUICtrlCreateColorButton()
    ;
    ; Description:     Creates a colored Button
    ;
    ; Syntax:          _GUICtrlCreateColorButton($text, $left, $top, $width, $height,$bkcolor[,$fontcolor] _
    ;											 [,$fontsize][,$fontweight][,$fontattrib][,$fontname])
    ;
    ; Parameter(s);      $text = The text of the control
    ;                    $left = The left side of the control
    ;                    $top = The top of the control
    ;                    $width = The width of the control
    ;                    $height = The height of the control
    ;                    $bkcolor = Backgroundcolor of the control
    ;                    $fontcolor = [optional] Fontcolor of the control
    ;					 $fontsize = [optional] Schriftgröße (default 9)
    ;					 $fontweight = [optional] Zeichenbreite (default 400)
    ;					 $fontattrib = [optional] Schriftattribut (kursiv:2 unnterstrichen:4 durchgestrichen:8)
    ;					 $fontname = [optional] Schriftfont
    ;
    ; Return Value(s):  array[1] = used to change colors
    ;                   array[0] = notifies GUIGetMsg if user clicks
    ;
    ; Author:            rakudave <rakudave@gmx.net>
    ;					Erweiterung $fontsize, $fontweight, $fontattrib, $fontname von BugFix
    ;==========================================================================================
    Func _GUICtrlCreateColorButton($text, $left, $top, $width, $height, $bkcolor, $fontcolor = -1, _
    	$fontsize = 9, $fontweight = 400, $fontattrib = "default", $fontname = "default")
        Local $colbut[2]
        If $fontcolor == -1 Then $fontcolor = 0x000000
        $colbut[0] = GUICtrlCreateLabel("", $left, $top, $width, $height, $SS_BLACKRECT)
        GUICtrlCreateLabel("", $left, $top, $width - 1, $height - 1, $SS_WHITERECT)
        GUICtrlCreateLabel("", $left + 1, $top + 1, $width - 2, $height - 2, $SS_GRAYRECT)
        $colbut[1] = GUICtrlCreateLabel($text, $left + 1, $top + 1, $width - 3, $height - 3, $SS_NOTIFY & $SS_CENTER)
        GUICtrlSetBkColor(-1, $bkcolor)
        GUICtrlSetColor(-1, $fontcolor)
    	GUICtrlSetFont(-1, $fontsize, $fontweight, $fontattrib, $fontname)
        Return $colbut
    EndFunc ;==>_GUICtrlCreateColorButton
    Alles anzeigen

    Edit: Sehe gerade, dass du dich auf diesen Post bezogen hast. Übrigens ist die Aussage von 2007. Damals gab es noch kein GUICtrlSetColor für Button.
    Diese halbschattierte Farbdarstellung hat aber mit der Farbe selbst nichts zu tun, das ist ein reiner Windows-Effekt. Ich hab es noch nicht ausgetestet, aber vielleicht ist dieser Effekt für die Standard-Windows-Farbpalette verfügbar.
    Falls das nicht klappt, bleibt die Möglichkeit einen Button aus zwei Labeln abzubilden. das untere etwas dunkler als das obere. Da drüber ein transparentes Label als eigentlichen Button.

  • Längste Collatz-Folge | Project Euler

    • BugFix
    • 13. Mai 2015 um 17:15
    Zitat von AspirinJunkie

    Ich komme hierbei auf 525 (bzw. 524 wenn man die erste Zahl nicht mitzählt).

    Oops, war ein Fehler, in falscher Zeile addiert - nun korrigiert, spart gleich 4 Sekunden. ;)

  • Längste Collatz-Folge | Project Euler

    • BugFix
    • 13. Mai 2015 um 11:11

    Edit: Da hatte ich die Addition der Terme eine Zeile zu früh - nun passt es.

    Meine Variante:

    Spoiler anzeigen
    AutoIt
    Local $iCalc = 999999
    Local $iMax, $iLen = 1
    Local Const $ARRAYLIMIT = $iCalc +1
    Local $aTerm[$ARRAYLIMIT] ; [Index]=Länge Folge
    Local $hTimer = TimerInit()
    
    
    For $i = 1 To $iCalc
    	If $aTerm[$i] Then ContinueLoop
    	$iTmp = _GetCollatz($i, $aTerm)
    	$aTerm[$i] = $iTmp
    	If $iTmp > $iLen Then
    		$iLen = $iTmp
    		$iMax = $i
    	EndIf
    Next
    
    
    ConsoleWrite(StringFormat('%.3f s %sLängste Folge bei Zahl: %i = %i Terme', TimerDiff($hTimer)/1000, @LF, $iMax, $iLen) & @LF)
    #cs
    39.898 s 
    Längste Folge bei Zahl: 837799 = 524 Terme
    #ce
    
    
    Func _GetCollatz($i, ByRef $aTerm)
    	Local $iTerm = 0
    	Do
    		If $i < $ARRAYLIMIT And $aTerm[$i] Then Return $iTerm + $aTerm[$i]
    		$iTerm += 1
    		$i = Mod($i,2) ? (3*$i+1) : ($i/2)
    	Until $i = 1
    	Return $iTerm
    EndFunc
    Alles anzeigen
  • Verbindung zum Oracle Server

    • BugFix
    • 12. Mai 2015 um 07:44
    Zitat von 4ern

    Jedoch hab ich nun das Problem mit Windows8.1 64 Bit

    Genau das ist der springende Punkt: MSDAORA ist eine 32bit-Dll und es gibt keine 64bit-Version. Der Support dafür wurde von M$ auch eingestellt, die verweisen nur noch auf den Oracle-Treiber.

  • Verbindung zum Oracle Server

    • BugFix
    • 11. Mai 2015 um 13:23

    Ich selber habe kein Oracle zur Verfügung und hatte dir deshalb nur ein Bsp. aus dem Web portiert.
    Du hattest noch gefragt, was MSDAORA bedeutet, nun das ist der Microsoft OLE DB-Provider für Oracle, ich vermute das ist abgeleitet aus MicroSoftDataAccessORAcle.
    Google mal speziell nach MSDAORA, da sollten einige Problemlösungen zu finden sein.

  • Rückgabe von ControlCommand per DLL-Struct auslesen

    • BugFix
    • 9. Mai 2015 um 22:45

    Da Notepad++ genau wie SciTE das Scintilla Modul nutzen, sollte auch der Zugriff identisch möglich sein.
    Hier das Interface für SciTE, sollte also analog laufen: SciTE-Interface

  • [JavaScript] Zeiträume

    • BugFix
    • 3. Mai 2015 um 11:44
    Zitat von Make-Grafik

    Wie man das am besten realisiert muss ich mir erst selber noch überlegen, besonders bei den Feiertagen die sich jährlich um irgendwelche Tage verschieben. Aber im Netz gibt es ja genug Formeln dazu wie z.B. die Osterformel. Ich überlege mir mal wie man das am besten umsetzen kann und was noch alles zu beachten ist. Die Zwischenergebnisse teile ich dir dann mit damit du Anregungen bekommst.

    Berechnung für Feiertage (fix und veränderlich, bundeslandspezifisch) liegt schon hier im Forum vor. Leider sind z. Zt. alle Dateianhänge verschwunden, aber ich glaube, dass ich meist den Code im Post auch zusätzlich direkt eingefügt habe. Einfach mal suchen.

    Edit: ja, ist im Post - hier: https://autoit.de/index.php/Thre…tID=524#post524

  • [JavaScript] Zeiträume

    • BugFix
    • 1. Mai 2015 um 13:50

    Mir ist gerade eine wesentlich effektivere Methode eingefallen, Wochentag-Zeit in Minuten umzurechnen:

    EDIT: Ich habe gleich mal die kpl. Auswertefunktion erstellt.

    AutoIt
    ConsoleWrite(_GetWorkTime('Sa 19:00', 'So 3:00') & @CRLF) ; Ausgabe: "AZ: 8:00; enthaltene ZZ: 3:00"
    
    
    Func _DayTime2Min($sDayTime) ; 'Mo 13:30' oder 'Sa 0:15'
    	Local $aTime = StringSplit(StringTrimLeft($sDayTime, 3), ':')
    	Return ((StringInStr('MoDiMiDoFrSaSo', StringLeft($sDayTime, 2))-1)/2)*1440 + _
    		$aTime[1]*60 + $aTime[2]
    EndFunc
    
    
    Func _GetWorkTime($sDayTimeStart, $sDayTimeEnd, $sExtraChargeFirst='So 0:00', $sExtraChargeLast='So 24:00')
    	Local $iStart = _DayTime2Min($sDayTimeStart), $iEnd = _DayTime2Min($sDayTimeEnd), $iXStart = _DayTime2Min($sExtraChargeFirst)
    	Local $iXEnd = _DayTime2Min($sExtraChargeLast), $iWorktime = $iEnd - $iStart, $iExtraCharge = 0
    	Select
    		Case StringLeft($sDayTimeStart, 2) = 'So' And StringLeft($sDayTimeEnd, 2) = 'Mo' ; So auf Mo ?
    			$iExtraCharge = $iXEnd - $iStart
    			$iWorktime += 10080 ; die erste Berechnung hat negatives Ergebnis, da Ende < Anfang ist - Shift um eine Woche nötig
    		Case $iStart >= $iXStart
    			$iExtraCharge = $iEnd - $iStart
    		Case $iStart < $iXStart And $iEnd > $iXStart
    			$iExtraCharge = $iEnd - $iXStart
    	EndSelect
    	Return StringFormat('AZ: %d:%02d; enthaltene ZZ: %d:%02d', Int($iWorktime/60), Mod($iWorktime, 60), Int($iExtraCharge/60), Mod($iExtraCharge, 60))
    EndFunc
    Alles anzeigen
  • [JavaScript] Zeiträume

    • BugFix
    • 29. April 2015 um 19:05

    Das Problem ist doch sicher nicht die Sprachsyntax, sondern die Programmlogik - oder?

    So würde ich das in AutoIt angehen:

    AutoIt
    ; Wochentagsbezogene Zeitschiene erstellen
    ; beginnend Mo = 0, endend So = 10080 (7d * 24h * 60m)
    ; zuschlaglose Zeit wäre also Mo bis incl. Sa. = 6*24*60 = 8640
    
    
    Func _DayTime2Min($sDayTime) ; 'Mo 13:30' oder 'Sa 0:15'
    	Local Const $1d = 1440
    	Local $iMin
    	Local $aDays[8] = ['','Mo','Di','Mi','Do','Fr','Sa','So']
    	Local $aDate = StringSplit($sDayTime, ' ')
    	For $i = 1 To 7
    		If $aDays[$i] = $aDate[1] Then
    			$iMin = ($i-1) * $1d
    			ExitLoop
    		EndIf
    	Next
    	$iMin += StringLeft($aDate[2], StringInStr($aDate[2], ':')-1) * 60 + StringRight($aDate[2], 2)
    	Return $iMin
    EndFunc
    
    
    ; das folgende kannst du in einer Funktion abarbeiten um zu unterscheiden ob Star-/Endzeit im Zuschlagszeitraum liegen
    
    
    ; Arbeitsbeginn
    $sStart = 'Sa 19:00'
    $iMinStart = _DayTime2Min($sStart)
    
    
    ; Arbeitsende
    $sEnde = 'So 03:00'
    $iMinEnde = _DayTime2Min($sEnde)
    
    
    ; Beginn Zuschlagzeit
    $sZuschlagStart = 'So 0:00'
    $iZuschlStart = _DayTime2Min($sZuschlagStart)
    
    
    ; zuschlagfähige Zeit
    $iZuschlagArbeitszeit = $iMinEnde - $iZuschlStart
    
    
    ConsoleWrite($iZuschlagArbeitszeit & @CRLF)  ; = 180
    Alles anzeigen

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™