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. Bitnugger

Beiträge von Bitnugger

  • Timer

    • Bitnugger
    • 14. Dezember 2018 um 12:20
    Zitat von autoiter

    die Option Opt('TrayAutoPause', 0) ; no pause greift nicht, wenn du Opt('TrayMenuMode', 1) benutzt. TrayAutoPause bestimmt beim Standardmenü nur, ob schon mit dem Klick auf das Icon das Skript pausiert wird oder man das noch extra auswählen muss. In dem Moment, wo du das Menü aber entfernst, spielt das eh keine Rolle mehr.

    Danke für den Hinweis!

  • Timer

    • Bitnugger
    • 14. Dezember 2018 um 08:09
    C
    ;-- TIME_STAMP   2018-12-14 08:06:20   v 0.1
    
    #Region    ;************ Includes ************
    #Include <TrayConstants.au3>
    #include <WinAPISys.au3>
    #include <Array.au3>
    #EndRegion ;************ Includes ************
    
    Opt('MustDeclareVars', 1) ; Variables must be pre-declared.
    Opt('TrayMenuMode', 1)    ; no default menu
    
    HotKeySet('^+i', _Exit) ; Press Ctrl + Shift + i for Exit
    
    Global $g_iIdleTime = 0
    
    _Example()
    
    Func _Example()
    ;~     Local Static $aMessage = [[0, 'Verfügbar'], [1, '1 Minute abwesend'], [2, '2 Minuten abwesend'], [3, '3 Minuten abwesend'], [4, '4 Minuten abwesend'], [5, 'Über 5 Minuten abwesend']] ; Testdaten
        Local Static $aMessage = [[0, 'Verfügbar'], [5, '5 Minuten abwesend'], [15, '15 Minuten abwesend'], [30, '30 Minuten abwesend'], [45, '45 Minuten abwesend'], [61, 'Über 60 Minuten abwesend']]
        Local $idTrayExit, $idTrayPause, $iPause = 0, $iAbsent = 0, $iIndex, $iMessage = -1, $iOldMessage = -1
    
        AdlibRegister(_GetIdleTime, 1000) ; 1x pro Sekunde die aktuelle IdleTime holen
    
        $idTrayPause = TrayCreateItem('Pause')
        $idTrayExit = TrayCreateItem('Exit')
    
        While 1
            Switch TrayGetMsg()
                Case $idTrayExit
                    Exit
                Case $idTrayPause
                    $iPause = BitAND(TrayItemGetState($idTrayPause), $TRAY_CHECKED) ? 1 : 0
                    If $iPause Then
                        ConsoleWrite('- In der Pause' & @CRLF)
                        RunWait('away.exe absent -absentstate:1 -message:"In der Pause"', '', @SW_HIDE)
                    EndIf
                Case Else
                    $iIndex = _ArraySearch($aMessage, $g_iIdleTime)
                    $iMessage = ($iAbsent = 1 And $g_iIdleTime = 0) ? 0 : ($iIndex < 1) ? -1 : $iIndex
                    $iAbsent = ($iIndex = 0) ? 0 : 1
    
                    If $iMessage > -1 Then
                        If $iMessage == $iOldMessage Then ContinueLoop
    
                        ConsoleWrite(StringFormat('> $g_iIdleTime = %2s  $iMessage = %2s  $iOldMessage = %2s  $iAbsent = %i  $iPause = %i  $aMessage[$iMessage][1] = %s\r\n', _
                                    $g_iIdleTime, $iMessage, $iOldMessage, $iAbsent, $iPause, $aMessage[$iMessage][1]))
    
                        RunWait('away.exe absent -absentstate:' & $iAbsent & ' -message:"' & $aMessage[$iMessage][1] & '"', '', @SW_HIDE)
                    EndIf
                    $iOldMessage = $iMessage
            EndSwitch
        WEnd
    EndFunc
    
    Func _GetIdleTime()
        $g_iIdleTime = Int(_WinAPI_GetIdleTime() / 1000 / 60)
    EndFunc
    
    Func _Exit()
        Exit
    EndFunc
    Alles anzeigen
  • Timer

    • Bitnugger
    • 13. Dezember 2018 um 16:10

    Dann ist es so richtig...

    RunWait('away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message:"' & $aMessage[$iMessage][1] & '"', '', @SW_HIDE)

    oder so...

    RunWait(@ComSpec & ' /c away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message:"' & $aMessage[$iMessage][1] & '"', '', @SW_HIDE)

  • Timer

    • Bitnugger
    • 13. Dezember 2018 um 15:58

    Habe gerade entdeckt, wo der Fehler steckt... es liegt an dem letzten Parameter bei RunWait: $aMessage[$iMessage].

    Die Zeile muss nun so aussehen, wie in der Zeile darüber mit dem ConsoleWrite, weil das Array nun zwei Dimensionen hat:

    RunWait('away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message ' & $aMessage[$iMessage][1], '', @SW_HIDE)

    oder so... wenn eine CMD benötigt wird, was aber wohl nicht erforderlich ist...

    RunWait(@ComSpec & ' /c away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message ' & $aMessage[$iMessage][1], '', @SW_HIDE)

  • Timer

    • Bitnugger
    • 13. Dezember 2018 um 15:40

    RunWait(@ComSpec & ' /c away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message ' & $aMessage[$iMessage], '', @SW_HIDE)

  • Timer

    • Bitnugger
    • 13. Dezember 2018 um 15:21
    Zitat von germanidol

    Kriegt man das dort mit eingebaut?

    Ja sicher doch...

    RunWait('away.exe absent -absentstate:' & ($bAbsent ? 1 : 0) & ' -message ' & $aMessage[$iMessage], '', @SW_HIDE)

  • Timer

    • Bitnugger
    • 12. Dezember 2018 um 23:03

    oder so...

    C
    ;-- TIME_STAMP   2018-12-12 23:02:20   v 0.1
    
    #include <WinAPISys.au3>
    #include <Array.au3>
    
    HotKeySet('^+i', _Exit) ; Press Ctrl + Shift + i for Exit
    
    _Example()
    
    Func _Example()
        Local Static $aMessage = [[0, 'Verfügbar'], [5, '5 Minuten'], [15, '15 Minuten'], [30, '30 Minuten'], [45, '45 Minuten'], [61, 'Über 60 Minuten abwesend']]
        Local $iIdleTime, $bAbsent = False, $iIndex, $iMessage = -1, $iOldMessage
    
        While 1
            $iIdleTime = Int(_WinAPI_GetIdleTime() / 1000 / 60)
    
            $iIndex = _ArraySearch($aMessage, $iIdleTime)
            $iMessage = ($bAbsent = True And $iIdleTime = 0) ? 0 : ($iIndex < 1) ? -1 : $iIndex
            $bAbsent = ($iIndex = 0) ? False : True
    
            ConsoleWrite(StringFormat('> $iIdleTime = %2s  $iMessage = %2s  $iOldMessage = %2s  $bAbsent = %s\r\n', $iIdleTime, $iMessage, $iOldMessage, $bAbsent))
    
            If $iMessage > -1 Then
                If $iMessage == $iOldMessage Then ContinueLoop
    
                $iOldMessage = $iMessage
                ConsoleWrite('! ' & $aMessage[$iMessage][1] & @CRLF)
    ;~             RunWait('away.exe -message ' & $aMessage[$iMessage], '', @SW_HIDE)
            EndIf
    
            Sleep(1000 * 30) ; 1x pro 30 Sekunden prüfen
        WEnd
    EndFunc
    
    Func _Exit()
        Exit
    EndFunc
    Alles anzeigen
  • Zu : Funktion _Number() von BugFix

    • Bitnugger
    • 12. Dezember 2018 um 18:18

    Funktioniert so aber leider nicht mit negativen Werten...

    Code
    Local $sNum = '-0.3'
    ConsoleWrite(StringFormat('> Number   : %12s \t #Error: %i\r\n', Number($sNum), @error))
    ConsoleWrite(StringFormat('! _Number  : %12s \t #Error: %i\r\n', _Number($sNum), @error))
    
    > Number   :         -0.3      #Error: 0
    ! _Number  :                   #Error: 1
  • Flash-Test

    • Bitnugger
    • 9. Dezember 2018 um 21:35

    @Musashi

    Stelle mal in den Eigenschaften der Eingabeaufforderung eine Schriftart ein, die UTF-8-Zeichen beinhaltet - z.B. DejaVu Sans Mono.

  • Bei Google-Translate die Übersetzung aus dem Quellcode auslesen

    • Bitnugger
    • 9. Dezember 2018 um 21:23

    Hier ein halbwegs funktionierendes Beispiel...

    C
    ;-- TIME_STAMP   2018-12-09 21:21:17   v 0.1
    
    #include <Array.au3>
    
    ; _GoogleTranslate ist ohne API-Key nur begrenzt nutzbar... mit neuer IP geht es aber wieder.
    
    ; EN --> DE
    Local $sEN = _
            'The theme manager retains the $sName and the $sList associations through the lifetime of the "window", even' & @CRLF & _
            'if visual styles subsequently change.' & @CRLF & _
            @CRLF & _
            'When $sName and $sList are Default, the theme manager removes the previously applied associations.' & @CRLF & _
            'To prevent visual styles from being applied to a specified window, add a _WinAPI_SetWindowTheme($hWnd, "", "") which will not match any section entries.' & @CRLF & _
            'C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg.' & @CRLF
    
    Local $sDE = _GoogleTranslate($sEN, 'en', 'de')
    ConsoleWrite(@CRLF & @CRLF & @CRLF & $sDE)
    Local $aDE = _GoogleTranslate($sEN, 'en', 'de', True)
    _ArrayDisplay($aDE, '$aDE')
    
    ; DE -- EN
    $sDE = 'In welchem Jahr hatten wir den kältesten Winter?' & @CRLF
    $sEN = _GoogleTranslate($sDE, 'de', 'en')
    ConsoleWrite(@CRLF & @CRLF & @CRLF & $sEN)
    
    Func _GoogleTranslate($sText, $sFrom = "en", $sTo = "de", $bReturnArray = False, $bReturnBoth = False)
        Local $sURL, $oHTTP, $aData, $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
    ;~     _ArrayDisplay($aText, '$aText')
    
        $sText = EncodeUrl($sText)
    ;~     ConsoleWrite('! Encode $sText = ' & $sText & @CRLF)
    ;~     $sURL = StringFormat("https://translate.googleapis.com/translate_a/single?client=gtx&sl=%s&tl=%s&dt=t&q=%s", $sFrom, $sTo, $sText)
        $sURL = StringFormat("https://translate.googleapis.com/translate_a/single?client=gtx&sl=%s&tl=%s&dt=t&q=%s&ie=UTF-8&oe=UTF-8", $sFrom, $sTo, $sText)
        $oHTTP = ObjCreate("Microsoft.XMLHTTP")
        $oHTTP.Open("POST", $sURL, False)
        $oHTTP.Send()
        If @error Then Return '@error 1 ' & @error
        $sText = $oHTTP.ResponseText
        If @error Then Return '@error 2 ' & @error
        $sText = DecodeUrl($sText)
        ConsoleWrite('- $sText = ' & $sText & @CRLF)
        $aData = StringRegExp(StringRegExpReplace($sText, '\\"', Chr(7)), '(?U)"(.+)"', 3)
    ;~     _ArrayDisplay($aData, '$aData')
        For $i = 0 To UBound($aData) - 2 Step 1
            If StringRight($aData[$i], 2) <> '\r\n' Then $aData[$i] &= '\r\n'
        Next
        _ArrayDelete($aData, $i)
        _ArrayDisplay($aData, '$aData')
        For $i = UBound($aData) -1 To 0 Step -1
            If $i > 0 And StringReplace($aData[$i], '\r\n', '') = '' Then
                $aData[$i - 1] &= '\r\n'
                _ArrayDelete($aData, $i)
            EndIf
        Next
        For $i = 0 To UBound($aData) -1 Step 1
            $aData[$i] = StringFormat(StringRegExpReplace($aData[$i], Chr(7), '"'))
            ConsoleWrite('> $aData[' & $i & '] = ' & $aData[$i])
        Next
    ;~     _ArrayDisplay($aData, '$aData')
        If $bReturnBoth Then Return $bReturnArray ? $aData : _ArrayToString($aData, '')
        For $i = UBound($aData) -1 To 0 Step -2
            _ArrayDelete($aData, $i)
        Next
        Return $bReturnArray ? $aData : _ArrayToString($aData, '')
    EndFunc   ;==>_GoogleTranslate
    
    Func EncodeUrl($src)
        Local $iCount = 1, $iStrLen = StringLen($src), $ch, $NewChr, $buff
    
        While ($iCount <= $iStrLen)
            ;Get byte code from string
            $ch = Asc(StringMid($src, $iCount, 1))
    
            ;Look for what bytes we have
            Switch $ch
                ;Looks ok here
                Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                    $buff &= Chr($ch)
                Case 32
                    ;Space found
                    $buff &= "+"
                Case Else
                    ;Convert $ch to hexidecimal
                    $buff &= "%" & Hex($ch, 2)
            EndSwitch
            ;INC Counter
            $iCount += 1
        WEnd
    
        Return $buff
    EndFunc   ;==>EncodeUrl
    
    Func DecodeUrl($src)
        Local $iCount = 1, $iStrLen = StringLen($src), $ch, $buff
    
        While ($iCount <= $iStrLen)
            $ch = StringMid($src, $iCount, 1)
            ;Correct spaces
            If ($ch = "+") Then $ch = " "
    
            ;Decode any hex values
            If ($ch = "%") Then
                $ch = Chr(Dec(StringMid($src, $iCount + 1, 2)))
                $iCount += 2
            EndIf
            ;Build buffer
            $buff &= $ch
            ;Inc Counter
            $iCount += 1
        WEnd
    
        Return $buff
    EndFunc   ;==>DecodeUrl
    Alles anzeigen
  • ListView füllen und ProgressBar

    • Bitnugger
    • 7. Dezember 2018 um 16:57
    Zitat von Code-Jack

    Aber - öhh, sicherlich bin ich nur zu dumm - was genau soll Dein Quelltext aussagen?

    Damit wollte ich nur zeigen, wie ich die Daten aus einer SQLite-Tabelle auslese, um sie mit _GUICtrlListView_AddArray im Listview anzuzeigen, ohne _SQLite_GetTable/_SQLite_GetTable2d zu verwenden.

  • ListView füllen und ProgressBar

    • Bitnugger
    • 7. Dezember 2018 um 16:26
    Zitat von Code-Jack

    Es geht um die Frage: Auf welche Weise bekommt man eine ListView schneller gefüllt?

    a) _SQLite_Query(), plus einer While-Schleife mit _SQLite_FetchData()

    b) _SQLite_GetTable2d() plus _GUICtrlListView_AddArray()

    Du meinst wohl...

    a) _SQLite_Query() in einer While-Schleife mit _SQLite_FetchData() plus _GUICtrlListView_AddArray()

    b) _SQLite_GetTable2d() plus _GUICtrlListView_AddArray()

    Anzahl der Zeilen/Spalten und Namen der Spalten holen und gewünschte Werte aus DB in Array kopieren für Anzeige im Listview.

    C
    ;-- TIME_STAMP   2018-12-07 16:23:18   v 0.1
    
    #Region    ;************ Includes ************
    #Include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <SQLite.au3>
    ;~ #include <SQLite.dll.au3>
    #EndRegion ;************ Includes ************
    
    _Example()
    
    Func _Example()
    
        #Region - GUI Create
        GUICreate('')
        Local $idListview = GUICtrlCreateListView('', 0, 0)
        GUISetState()
        #EndRegion
    
        Local $sSQLiteDll = "F:\AutoIt\AutoIt3_Shared_Files\sqlite3.dll"
        If Not FileExists($sSQLiteDll) Then
            Local $sSQLiteDll = FileOpenDialog('Wo finde ich die SQLite.dll?', @DesktopDir, 'Dll (*.dll)', 'SQLite.dll')
            FileChangeDir(@ScriptDir)
            If Not $sSQLiteDll Then Exit 1
        EndIf
        _SQLite_Startup($sSQLiteDll, True, 1)
        If @error Then
            MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite.dll Can't be Loaded!")
            Exit -1
        EndIf
        ConsoleWrite("> _SQLite_LibVersion = " & _SQLite_LibVersion() & @CRLF)
        Local $hDB = _SQLite_Open() ; Open a :memory: database
        If @error Then
            MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!")
            Exit -1
        EndIf
    
        ; Example Table
        ;   Name        | Age
        ;   -----------------------
        ;   Alice       | 43
        ;   Bob         | 28
        ;   Cindy       | 21
        ;   Lucy        | 17
    
        __SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age);")
        __SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice', 43);")
        __SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob', 28);")
        __SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy', 21);")
        __SQLite_Exec(-1, "INSERT INTO persons VALUES ('Lucy', 17);")
    
        Local $hQuery, $aNames[0], $aRows, $aResult, $iRows, $iColumns, $iRval
    
        ; Anzahl der Zeilen holen
    ;~     _SQLite_Query(-1, 'SELECT COUNT(*) FROM persons;', $hQuery) ; alle Zeilen
    ;~     _SQLite_Query(-1, 'SELECT COUNT("sqlite_num_fields") FROM persons;', $hQuery) ; alle Zeilen
    ;~     _SQLite_Query(-1, 'SELECT COUNT(*) FROM persons WHERE Age > 17 AND Name LIKE "%y";', $hQuery) ; nur Zeilen mit Treffer (1)
    ;~     _SQLite_Query(-1, 'SELECT COUNT("sqlite_num_fields") FROM persons WHERE Age < 43 AND Name <> "Lucy";', $hQuery) ; nur Zeilen mit Treffer (2)
        _SQLite_Query(-1, 'SELECT COUNT("sqlite_num_fields") FROM persons WHERE Age < 68 AND Name <> "Lucy";', $hQuery) ; nur Zeilen mit Treffer (3)
        _SQLite_FetchData($hQuery, $aRows, False, False)
        _SQLite_QueryFinalize($hQuery)
        ConsoleWrite('- $aRows    = ' & _ArrayToString($aRows, ', ') & @CRLF)
    
        ; Anzahl und Namen der Spalten holen
        _SQLite_Query(-1, "pragma table_info(persons);", $hQuery)
        While _SQLite_FetchData($hQuery, $aResult, False, False) = $SQLITE_OK
    ;~         _ArrayDisplay($aResult, '$aResult')
            $iColumns += 1
            ReDim $aNames[$iColumns]
            $aNames[$iColumns -1] = $aResult[1]
            _GUICtrlListView_AddColumn($idListview, $aNames[$iColumns -1])
        WEnd
        _SQLite_QueryFinalize($hQuery)
        ConsoleWrite('- $iColumns = ' & $iColumns & @CRLF)
    
        Local $aListview[$aRows[0]][$iColumns]
        _SQLite_Query(-1, "SELECT * FROM persons WHERE Age < 68 AND Name <> 'Lucy';", $hQuery)
        For $i = 0 To $aRows[0] - 1 Step 1
            _SQLite_FetchData($hQuery, $aResult, False, False)
    ;~         _ArrayDisplay($aResult, '$aResult')
            For $j = 0 To $iColumns - 1 Step 1
                $aListview[$i][$j] = $aResult[$j]
            Next
        Next
        _SQLite_QueryFinalize($hQuery)
    ;~     _ArrayDisplay($aListview, '$aListview', '', 0, Default, _ArrayToString($aNames, '|'))
    
        _GUICtrlListView_AddArray($idListview, $aListview)
    
        #Region - GUI SwitchLoop
        While True
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    Exit
            EndSwitch
        WEnd
        #EndRegion
    
        _SQLite_Close()
        _SQLite_Shutdown()
    EndFunc   ;==>_Example
    
    Func __SQLite_Exec($hDB, $sExec)
        If Not _SQLite_Exec($hDB, $sExec) = $SQLITE_OK Then MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
    EndFunc
    Alles anzeigen
  • Subclassing und AutoIts interne Nachrichtenverarbeitung

    • Bitnugger
    • 6. Dezember 2018 um 10:15

    Guck mal...

    GWL_USERDATA.png

    Dateien

    WinProc.au3 3,96 kB – 429 Downloads
  • Subclassing und AutoIts interne Nachrichtenverarbeitung

    • Bitnugger
    • 6. Dezember 2018 um 02:40
    Zitat von chesstiger

    So, ich hab's gelöst.

    Klasse - sehr schön! ;)

  • Icon verstecken (Systray)

    • Bitnugger
    • 6. Dezember 2018 um 02:34

    autoiter

    Ich habe dein Script _ListControls.au3 etwas umgestrickt und ein paar Optionen hinzugefügt... die Zeilen 86-90 in deinem Original... so kann man "StringFormat" natürlich auch benutzen! 8o

    Man konnte nur alle oder die sichtbaren Controls anzeigen lassen... jetzt auch nur die hidden. Die Texte wurden immer in voller Länge ausgegeben... bei SciTE z.B. (Quelltext) nicht unbedingt gut. Nun können die Texte begrenzt werden, oder man setzt die Länge einfach auf 0, wenn man sie gar nicht haben will. Zudem wird jetzt auch die (ungeschnittene) Länge der Texte mit angezeigt.

    Im Anhang habe ich mal eine von mir angepasste WinGetControls.au3 gelegt... macht in etwa dasselbe wie _ListControls... etwas detaillierter... und es wird kein String, sondern ein Array zurückgegeben.

    Dateien

    _ListControls.au3 5,34 kB – 407 Downloads WinGetControls.zip 4,99 kB – 425 Downloads
  • Zeichenfolge finden in einer Textdatei und 'kopieren' in eine Variable zur Weiterverwendung

    • Bitnugger
    • 5. Dezember 2018 um 03:06
    Zitat von Musashi

    Deine Variante dauert bei großen Dateien aber deutlich länger. Probiere mal meinen Testcode.

    Ohhh...

    Code
    _ReadFile  = 00:00:00.003  Data         = "1234567890ABC"
    _ReadFile2 = 00:02:01.476  Letzte Zeile = "X1234567890ABC"
  • Zeichenfolge finden in einer Textdatei und 'kopieren' in eine Variable zur Weiterverwendung

    • Bitnugger
    • 4. Dezember 2018 um 23:19

    Wenn nur die letzte Zeile ausgewertet werden soll, dann geht es auch so:

    Code
    Local $sLogFileName = 'Logfile.txt', $sLogFile = _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX.YY.ZZZZ" <-----' & @CRLF
    If Not FileExists($sLogFileName) Then FileWrite($sLogFileName, $sLogFile)
    
    Local $sMatch = StringMid(FileReadLine($sLogFileName, -1), 12, 4)
    ConsoleWrite('$sMatch = ' & $sMatch & @CRLF)
  • Zeichenfolge finden in einer Textdatei und 'kopieren' in eine Variable zur Weiterverwendung

    • Bitnugger
    • 4. Dezember 2018 um 16:45
    Zitat von Musashi

    Liegt die max. Länge eines Strings nicht bei 2,147,483,647 ?

    Ja, das Logfile dürfte also nicht größer als 1, 99 GB sein...

    So, wie alpines es gezeigt hat, ist es quasi egal, wie groß das Logfile ist - wenn es aber nicht mehr als 16777216 Zeilen hat, geht es auch so:

    Code
    #Include <Debug.au3>
    
    Local $sLogFileName = 'm:\Logfile.txt', $sLogFile = _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX.YY.ZZZZ" <-----' & @CRLF & _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX1.Y1Y1.Z1Z1Z1Z1" <-----' & @CRLF & _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX2.Y2Y2.Z2Z2Z2Z2" <-----' & @CRLF
    
    If Not FileExists($sLogFileName) Then FileWrite($sLogFileName, $sLogFile)
    
    Local $aLogFile = FileReadToArray($sLogFileName)
    Local $aMatch = _ArrayFindAll($aLogFile, '----> "‚¬\|v(.+\..+)\..+', 0, 0, 0, 3)
    If UBound($aMatch) Then
        _ArrayColInsert($aMatch, 1)
        For $i = 0 To UBound($aMatch) -1 Step 1
            $aMatch[$i][1] = StringMid($aLogFile[$aMatch[$i][0]], 12 ,4)
        Next
        _DebugArrayDisplay($aMatch, '$aMatch', '', 0, Default, 'Zeilennummer|Match')
        ; Ergebnis:
        ; Row  |Zeilennummer|Match
        ; Row 0|1           |X.YY
        ; Row 1|3           |X1.Y
        ; Row 2|5           |X2.Y
    EndIf
    Alles anzeigen
  • Zeichenfolge finden in einer Textdatei und 'kopieren' in eine Variable zur Weiterverwendung

    • Bitnugger
    • 4. Dezember 2018 um 15:42

    Ich denke mal, so meint er das...

    Code
    #Include <Array.au3>
    
    Local $sLogFile = _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX.YY.ZZZZ" <-----' & @CRLF & _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX1.Y1Y1.Z1Z1Z1Z1" <-----' & @CRLF & _
        'BlablaBla' & @CRLF & _
        '----> "‚¬|vX2.Y2Y2.Z2Z2Z2Z2" <-----' & @CRLF
    
    Local $aRx = StringRegExp($sLogFile, '----> "‚¬\|v(.+\..+)\..+', 3)
    _ArrayDisplay($aRx, '$aRx')
    
    ; Ergebnis:
    ; Row  |Col 0
    ; Row 0|X.YY
    ; Row 1|X1.Y1Y1
    ; Row 2|X2.Y2Y2
    Alles anzeigen
  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2018.08.04)

    • Bitnugger
    • 4. Dezember 2018 um 13:52

    $tagLOGFONT - Parameter Height

    Falsch: Zeichenhöhe, in logischen Einheiten, der Schriftart

    Richtig: Höhe in logischen Einheiten der Zeichenzelle oder des Zeichens der Schriftart

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™