extended TimerDiff()

    • Offizieller Beitrag

    Hi,
    ich habe die Funktion TimerDiff() erweitert und die Funktion _TimerDiffExt() erstellt.
    Die Funktion gibt ein Array mit folgenden Inhalten zurück:
    - Originalrückgabe der Funktion TimerDiff()
    - Nachkommateil des Sekundenwertes
    - Sekundenanteil
    - Minutenanteil
    - Stundenanteil
    - Tage

    Edit 04.01.09
    Erweiterung auf folgende zusätzliche Ausgabemöglichkeiten (formatierter String)
    - 1d 01:58:02
    - 1d 01:58:02,562
    - 15:02:02
    - 15:02:02,563
    - 57:02
    - 57:02,563

    _TimerDiffExt
    [autoit]

    ;===============================================================================
    ; Function Name: _TimerDiffExt($INIT=-1, $Ret='a', $PostDec=0, $DelimDec=',')
    ; Description:: Erweiterte TimerDiff-Funktion, splittet Differenz auf
    ; Rückgabe als Array oder formatierter String
    ; Parameter(s): $INIT Variable der Initialisierung mit TimerInit()
    ; $Ret Return-Type (a=Array[Standard]; d=d hh:mm:ss[,ms]; h=hh:mm:ss[,ms]; m=mm:ss[,ms];)
    ; $PostDec Nachkommastellen für Sekunden 0=Nein(Standard); 1=Ja
    ; $DelimDec Trenner für Nachkommastellen, Standard=','
    ; Return Value(s): Erfolg Array[0] - Return von TimerDiff()
    ; Array[1] - Nachkommateil von Sekunden, 3-stellig
    ; Array[2] - Sekundenanteil
    ; Array[3] - Minutenanteil
    ; Array[4] - Stundenanteil
    ; Array[5] - Tageanteil
    ; oder String [1d 01:58:02/ 1d 01:58:02,562] [15:02:02/ 15:02:02,563] [57:02/ 57:02,563]
    ; Fehler -1 @error 1 (keine TimerInit-Referenz übergeben)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _TimerDiffExt($INIT=-1, $Ret='a', $PostDec=0, $DelimDec=',')
    If $INIT = -1 Then Return SetError(1,0,-1)
    Local $aReturn[6] = [0,0,0,0,0,0]
    $aReturn[0] = TimerDiff($INIT)
    Local $sec = Floor($aReturn[0]/1000)
    Local $msec = StringRegExp($aReturn[0], '\A\d+', 1)
    $aReturn[1] = StringRight('00' & $msec[0], 3)
    Select
    Case $sec > 86399 ; s/min/h/d
    $aReturn[2] = Mod(Mod(Mod($sec,86400),3600),60)
    $aReturn[3] = Floor(Mod(Mod($sec,86400),3600)/60)
    $aReturn[4] = Floor(Mod($sec,86400)/3600)
    $aReturn[5] = Floor($sec/86400)
    Case $sec > 3599 ; s/min/h
    $aReturn[2] = Mod(Mod($sec,3600),60)
    $aReturn[3] = Floor(Mod($sec,3600)/60)
    $aReturn[4] = Floor($sec/3600)
    Case $sec > 59 ; s/min
    $aReturn[2] = Mod($sec, 60)
    $aReturn[3] = Floor($sec/60)
    Case Else ; s
    $aReturn[2] = $sec
    EndSelect
    If $PostDec <> 0 Then $PostDec = 1
    Local $sReturn
    Switch StringLower($Ret)
    Case 'd'
    $sReturn = StringFormat('%ud %.2u:%.2u:%.2u', $aReturn[5], $aReturn[4], $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case 'h'
    $sReturn = StringFormat('%.2u:%.2u:%.2u', $aReturn[4], $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case 'm'
    $sReturn = StringFormat('%.2u:%.2u', $aReturn[3], $aReturn[2])
    If $PostDec Then $sReturn &= $DelimDec & $aReturn[1]
    Case Else
    Return $aReturn
    EndSwitch
    Return $sReturn
    EndFunc ;==>_TimerDiffExt

    [/autoit]

    DL bisher: 26