__cwt() ConsoleWriteTimerdiff

  • Moin,

    zum debuggen habe ich mir eine kleine Funktion geschrieben.

    Spoiler anzeigen
    [autoit]


    #include <date.au3> ; _Now()
    #include <file.au3> ; _FileWriteLog()
    #include <debug.au3> ; _DebugSetup()
    ;----------------
    $iTimeAll = TimerInit()
    $iTimeSection = TimerInit()
    Global $giLoop = 0 ; Schleifenvariable für __cwt
    Global $giCWT = 1 ; Ausgabensteuerung
    ;----------------
    $sLog = StringTrimRight(@ScriptName, 4) & ".log"
    $sIni = StringTrimRight(@ScriptName, 4) & ".ini"
    $sDebugLog = StringTrimRight(@ScriptName, 4) & "_Debug.log"
    ;----------------
    __cwt(" ", "|0014|", "Wie lange dauert der Funktionsaufruf __test()", $giCWT)
    __test(2)
    __cwt(" ", "|0016|", "<-- Im Timerfeld stehen die Ausführungszeiten", $giCWT)
    __test(5)
    __cwt(" ", "|0018|", "<-- Im Timerfeld stehen die Ausführungszeiten", $giCWT)
    __cwt(" ", "|0019|", " -----------------------------------------", $giCWT)
    ConsoleWrite(@CRLF & @CRLF)
    __cwt(" ", "|0021|", "Ausgabe in der Scite Konsole schwarz")
    __cwt(" ", "|0022|", "15 durch freistehende Ziffer wird die Ausgabe in lila dagestellt. Mit Mausklick auf die Ziffer wird zur Zeile=Ziffer gesprungen")
    __cwt("!", "|0023|", "Ausgabe in der Scite Konsole rot")
    __cwt("+", "|0024|", "Ausgabe in der Scite Konsole grün")
    __cwt(">", "|0025|", "Ausgabe in der Scite Konsole blau")
    __cwt("-", "|0026|", "Ausgabe in der Scite Konsole orange")
    ConsoleWrite(@CRLF & @CRLF)
    __cwt("+d", "|0028|", "Ausgabe in der Scite Konsole grün und mit Datumsangabe")
    __cwt("+d", "|0029|", "Ausgabe in der Scite Konsole grün und mit Datumsangabe, Timerausgabe rechtsbündig", -1)
    __cwt(" ", "|0030|", "Ausgabe als TrayTip", 4)
    ConsoleWrite(@CRLF & @CRLF)
    For $i = 1 To 3
    $giLoop += 1
    __cwt(" ", "|0034|", "Ausgabe in der Scite Konsole schwarz, mit Schleifenvaribale $giLoop")
    Sleep(2000)
    Next

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

    Func __test($t)
    Sleep($t * 1000)
    EndFunc
    ;----------------
    Func __cwt($sNow=" ", $sLN="|0042|", $sString="", $iFlag=1)
    ;===============================================================================
    ; Function Name: __cwt($sNow, $sSLN, $sString, $iFlag)
    ; Description: Mit dieser Funktion kann die Ausgabe des zu übergebenen String gesteuert werden.
    ; Parameter(s): $sNow:
    ; 1. Zeichen optional
    ; 1. Zeichen = "!" <-- In rot wird die Ausgabe dagestellt
    ; 1. Zeichen = "+" <-- In grün wird die Ausgabe dagestellt
    ; 1. Zeichen = ">" <-- In blau wird die Ausgabe dagestellt
    ; 1. Zeichen = "-" <-- In rot wird die Ausgabe dagestellt
    ; 2. Zeichen optional
    ; 2. Zeichen = "d" <-- Das aktuelle Datum in der Form "25.09.2010 14:54:19" wird ausgegeben
    ;
    ; $sLN:
    ; Zeilennummerübergabe
    ; $sLN=@ScriptLineNumber funktioniert nicht wenn kompiliert
    ; $sString:
    ; - Der übergebene String
    ; - Ist im Sring eine freistehende Ziffer dann,
    ; frei stehende Ziffer=pink mit Sprung zur Zeile Ziffer, (Ziffer)=rot mit Sprung zur Zeile Ziffer
    ; mit Mausklick auf die Ziffer wird zur Zeile=Ziffer gesprungen
    ; $iFlag:
    ; wenn $iFlag negativ, dann $iTimerSection und $iTimerAll rechtsbündig
    ; 1 <-- Ausgabe auf die Konsole
    ; 2 <-- Ausgabe in die Log-Datei (Variable $sLog)
    ; 4 <-- Ausgabe als TrayTip
    ; 8 <-- Ausgabe durch die Variable _DebugOut bestimmt
    ; 16 <-- Ausgabe in das debug Fenster von Sysinternals
    ;
    ; Wenn Schleifenvaribale $giLoop > 0 dann wird sie hier ausgegeben
    ; Requirement(s): -
    ; Return Value(s): -
    ; Author(s): Paule (http://www.autoit.de)
    ;===============================================================================
    Local $i, $d, $l
    If $giLoop > 0 Then $i = @TAB & StringFormat("|%04s|", $giLoop)
    If StringLen($sNow) = 2 And StringMid($sNow, 2, 1) = "d" Then
    $d = StringLeft($sNow, 1) & _Now() & @TAB
    Else
    $d = StringLeft($sNow, 1)
    EndIf
    Local $sTime = StringFormat("(%-12s)", __TicksToTimeFormat(TimerDiff($iTimeSection)) & " " & __TicksToTimeFormat(TimerDiff($iTimeAll)))
    Local $left = $d & $sLN & $i & @TAB & $sTime & @TAB & $sString & @CRLF
    Local $right = $d & $sLN & $i & @TAB & $sString & @TAB & $sTime & @CRLF
    Local $msg = $left

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

    If $iFlag < 0 Then
    $iFlag = Abs($iFlag)
    $msg = $right
    EndIf

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

    If BitAND($iFlag, 1) = 1 Then ConsoleWrite($msg)
    If BitAND($iFlag, 2) = 2 Then _FileWriteLog($sLog, $msg)
    If BitAND($iFlag, 4) = 4 Then TrayTip("__cwt()", $msg, 2)
    If BitAND($iFlag, 8) = 8 Then _DebugOut(StringTrimRight($msg, 2))
    If BitAND($iFlag, 16) = 16 Then __dbg($msg)
    $iTimeSection = TimerInit()
    EndFunc
    ;----------------
    Func __TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss:%ms')
    ;===============================================================================
    ; Function Name: _TicksToTimeFormat($iTicks, $sFormat = '%hh:%mm:%ss')
    ; Description:: Diese Funktion wandelt Millisekunden in ein anzugebenes Zeitformat um
    ; Parameter(s): $iTicks = Zeit in Millisekunden
    ; $sFormat:
    ; %ww für Wochen
    ; %dd für Tage
    ; %hh für Stunden
    ; %mm für Minuten
    ; %ss für Sekunden
    ; %ms für Millisekunden
    ; sonstige Zeichen, die dazwischen stehen, werden übernommen
    ; Requirement(s): -
    ; Return Value(s): Zeit im ausgewählten Format (String)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Local $aTime[6], $sOut, $aTimeFormat[6] = ['ww', 'dd', 'hh', 'mm', 'ss', 'ms'], $aFormat
    $aTime[4] = Int($iTicks / 1000)
    $aTime[5] = $iTicks - $aTime[4] * 1000
    $aTime[0] = Int($aTime[4] / 604800)
    $aTime[4] = Mod($aTime[4], 604800)
    $aTime[1] = Int($aTime[4] / 86400)
    $aTime[4] = Mod($aTime[4], 86400)
    $aTime[2] = Int($aTime[4] / 3600)
    $aTime[4] = Mod($aTime[4], 3600)
    $aTime[3] = Int($aTime[4] / 60)
    $aTime[4] = Mod($aTime[4], 60)
    $aFormat = StringRegExp($sFormat, '%([^%]+)', 3)
    If Not IsArray($aFormat) Then Return SetError(1, 0, $iTicks)
    For $i = 0 To UBound($aFormat) - 1
    For $j = 0 To UBound($aTimeFormat) - 1
    If StringLeft($aFormat[$i], 2) = $aTimeFormat[$j] Then $sOut &= StringFormat('%0' & 2 + ($j=5) & 'i', $aTime[$j]) & StringMid($aFormat[$i], 3)
    Next
    Next
    Return $sOut
    EndFunc ;==>_TicksToTimeFormat
    ;----------------
    Func __dbg($msg)
    ;use debugview from sysinternals
    ;http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx Download
    ;http://msdn.microsoft.com/en-us/library/ms679303(VS.85).aspx Functions
    DllCall("kernel32.dll", "none", "OutputDebugString", "str", @ScriptName & " " & $msg)
    EndFunc ;==>dbg
    ;----------------

    [/autoit]

    Gruß Paule