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

  • FAQ - SciTE Editor

    • BugFix
    • 22. August 2019 um 09:31

    Wie kann ich den Hintergrund beim Ausdruck aus SciTE anpassen?

    Das wird geregelt mit print.colour.mode

    Einfügen in die SciTEUser.properties mit dem gewünschten Modus:

    Zitat von Hilfe zu SciTE


    Einige Leute bevorzugen hellen Text auf einem schwarzen Hintergrund auf dem Bildschirm, aber dunklen Text auf Weiß auf Papier. Wenn print.colour.mode auf 1 gesetzt ist, wird jede Farbe zum Drucken invertiert. Bei der Einstellung 2 wird beim Drucken schwarzer Text auf weißem Hintergrund ausgegeben. 3 setzt den Hintergrund auf Weiß und 4 setzt den Standardhintergrund auf Weiß.

  • Diskussion zu: FAQ SciTE Editor

    • BugFix
    • 22. August 2019 um 09:23

    De Rand Ere

    Sämtliche properties Einstellungen, die man personifiziert, gehören in die SciTEUser.properties. Das Warum hat ja water schon erklärt. In der Rangordnung der Property Dateien geniessen die SciTEUser.properties eine höhere Priorität und überschreiben somit die Einstellungen Globaler Properties,

  • Verständnisfrage WindowStyle/Ex

    • BugFix
    • 19. August 2019 um 09:35

    Ich habe folgendes Skript erstellt, um mir Style und StyleEx von Fenstern in Namenform ausgeben zu lassen:

    WindowStyleNamed
    Python
    #include <WinAPI.au3>
    
    Local $hWnd = WinGetHandle('[ACTIVE]')
    Local $sStyle = WindowStyleNamed(_WinAPI_GetWindowLong($hWnd, -16))
    Local $sStyleEx = WindowStyleNamed(_WinAPI_GetWindowLong($hWnd, -20), True)
    ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & "   var: $sStyle --> " & @LF & $sStyle & @LF)
    ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & "   var: $sStyleEx --> " & @LF & $sStyleEx & @LF)
    
    Func WindowStyleNamed($_iStyle, $_bEx=False)
        Local $oStyle = ObjCreate('Scripting.Dictionary')
        Local $oStyleEx = $oStyle
        Local $sResult = ''
        $oStyleEx(16) = "WS_EX_ACCEPTFILES"
        $oStyleEx(262144) = "WS_EX_APPWINDOW"
        $oStyleEx(512) = "WS_EX_CLIENTEDGE"
        $oStyleEx(33554432) = "WS_EX_COMPOSITED"
        $oStyleEx(1024) = "WS_EX_CONTEXTHELP"
        $oStyleEx(65536) = "WS_EX_CONTROLPARENT"
        $oStyleEx(1) = "WS_EX_DLGMODALFRAME"
        $oStyleEx(524288) = "WS_EX_LAYERED "
        $oStyleEx(4194304) = "WS_EX_LAYOUTRTL"
        $oStyleEx(0) = "WS_EX_LEFT"
        $oStyleEx(16384) = "WS_EX_LEFTSCROLLBAR"
        $oStyleEx(0) = "WS_EX_LTRREADING"
        $oStyleEx(64) = "WS_EX_MDICHILD"
        $oStyleEx(134217728) = "WS_EX_NOACTIVATE"
        $oStyleEx(1048576) = "WS_EX_NOINHERITLAYOUT"
        $oStyleEx(4) = "WS_EX_NOPARENTNOTIFY"
        $oStyleEx(768) = "WS_EX_OVERLAPPEDWINDOW"
        $oStyleEx(392) = "WS_EX_PALETTEWINDOW"
        $oStyleEx(4096) = "WS_EX_RIGHT"
        $oStyleEx(0) = "WS_EX_RIGHTSCROLLBAR"
        $oStyleEx(8192) = "WS_EX_RTLREADING"
        $oStyleEx(131072) = "WS_EX_STATICEDGE"
        $oStyleEx(128) = "WS_EX_TOOLWINDOW"
        $oStyleEx(8) = "WS_EX_TOPMOST"
        $oStyleEx(32) = "WS_EX_TRANSPARENT"
        $oStyleEx(256) = "WS_EX_WINDOWEDGE"
    
        $oStyle(8388608) = "WS_BORDER"
        $oStyle(12582912) = "WS_CAPTION"
        $oStyle(1073741824) = "WS_CHILD"
        $oStyle(33554432) = "WS_CLIPCHILDREN"
        $oStyle(67108864) = "WS_CLIPSIBLINGS"
        $oStyle(134217728) = "WS_DISABLED"
        $oStyle(4194304) = "WS_DLGFRAME"
        $oStyle(131072) = "WS_GROUP"
        $oStyle(1048576) = "WS_HSCROLL"
        $oStyle(16777216) = "WS_MAXIMIZE"
        $oStyle(65536) = "WS_MAXIMIZEBOX"
        $oStyle(536870912) = "WS_MINIMIZE"
        $oStyle(131072) = "WS_MINIMIZEBOX"
        $oStyle(0) = "WS_OVERLAPPED"
        $oStyle(13565952) = "WS_OVERLAPPEDWINDOW"
        $oStyle(2147483648) = "WS_POPUP"
        $oStyle(2156396544) = "WS_POPUPWINDOW"
        $oStyle(262144) = "WS_SIZEFRAME"
        $oStyle(524288) = "WS_SYSMENU"
        $oStyle(65536) = "WS_TABSTOP"
        $oStyle(268435456) = "WS_VISIBLE"
        $oStyle(2097152) = "WS_VSCROLL"
        If $_bEx Then
            For $key In $oStyleEx.Keys
                If BitAND($_iStyle, $key) <> 0 Then $sResult &= $oStyleEx($key) & '|'
            Next
        Else
            For $key In $oStyle.Keys
                If BitAND($_iStyle, $key) <> 0 Then $sResult &= $oStyle($key) & '|'
            Next
        EndIf
        Return StringTrimRight($sResult, 1)
    EndFunc
    Alles anzeigen

    Es gibt aber Styles(Ex), mit dem Wert "0". Es ist doch aber gar nicht möglich mit Bit-Operationen einen Wert "0" zu identifizieren. Meines Erachtens kann es diese Werte gar nicht geben.

    Hat jemand eine Erklärung dafür?

  • Wie speichert man Logs am besten ab?

    • BugFix
    • 17. August 2019 um 00:07

    Das kann man wohl nicht generell festlegen. Ich habe z. B. eine Messmittelverwaltung in einer DB mit 3 Tabellen. Da habe ich kpl. auf zusätzliche Keys verzichtet und speichere gezielt redundant, weil das Datenaufkommen so gering ist, dass Redundanzvermeidung und Indexing keinen Vorteil bringen.

    Es hängt also stark von deiner Anwendung ab.

    Man kann sich stur an irgendwelche Regeln halten, wenn es so vorgegeben ist (z. B. Qualitätsmanagement) muss man es auch, aber es lohnt sich schon Abläufe zu hinterfragen.

  • _MsgBox ins Projekt einbinden

    • BugFix
    • 16. August 2019 um 12:13

    Also, das Skript war einfach nicht lauffähig. Man geht auch anders vor: Erst Erstellen aller GUI (deine MsgBox ist auch eine GUI) und dann bei Bedarf aktualisieren und einblenden.

    Ich habe das mal an deinem Musterskript geändert:

    Python
    #include <ColorConstants.au3>
    #include <FontConstants.au3>
    #include <GDIPlus.au3>
    #include <GDIPlusConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Sound.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    
    Opt('MustDeclareVars', 1)
    
    #region - MessagBox
    Global $hMsgBox = GUICreate("",800,340,-1,-1,$WS_POPUPWINDOW,$WS_EX_CLIENTEDGE+$WS_EX_DLGMODALFRAME)
    GUISetBkColor(0xFFCC01, $hMsgBox) ; Postgelb
    Global $hMBGraphic = GUICtrlCreateGraphic(0,13,800,55)
    GUICtrlSetBkColor($hMBGraphic,0xff0000)
    
    Global $hMBLblKat = GUICtrlCreateLabel('',20, 20, 110, 38) ; Kategorie
    GUICtrlSetFont($hMBLblKat,25, $FW_BOLD ,0)
    GUICtrlSetColor($hMBLblKat,$COLOR_WHITE)
    GUICtrlSetBkColor($hMBLblKat,0xff0000)
    
    Global $hMBLblBereich = GUICtrlCreateLabel('',130, 20, 650, 38,$SS_CENTER) ; Bereich
    GUICtrlSetFont($hMBLblBereich,25, $FW_BOLD ,0)
    GUICtrlSetColor($hMBLblBereich,$COLOR_WHITE)
    GUICtrlSetBkColor($hMBLblBereich,0xff0000)
    
    Global $idMsgNo = GUICtrlCreateButton('', 30 , 290, 180, 40)
    GUICtrlSetFont($idMsgNo,10, $FW_MEDIUM ,0)
    Global $idMsgOk = GUICtrlCreateButton('', 320 , 270, 450, 60)
    GUICtrlSetFont($idMsgOk,20, $FW_BOLD ,0)
    GUICtrlSetState($idMsgOk,$GUI_FOCUS)
    
    ; Info Text Bereich
    Global $hMBInfoGraphic = GUICtrlCreateGraphic(150,90,617,170,$SS_ETCHEDFRAME)
    GUICtrlSetBkColor(-1,0xFFEE99)
    Global $hMBLblInfo = GUICtrlCreateLabel('$vMsgTxt',170,110, 595,140)
    GUICtrlSetFont($hMBLblInfo,15, $FW_MEDIUM  ,0)
    GUICtrlSetBkColor($hMBLblInfo,0xFFEE99)
    #endregion
    
    Global $vSound
    ;~ ---------- Definitionen - HauptFenster -----------------
    Global $vGUIBreite = 1366
    Global $vGUIHoehe  = 700
    Global $vAbfrage, $vTxt
    
    Global $hGui = GUICreate("Paketverwaltung DHL-Filiale - Lagerung, Suche und Rücksendung",$vGUIBreite,$vGUIHoehe)
    Global $idBeenden = GUICtrlCreateButton("Beenden (ESC)", $vGUIBreite - 200 , $vGUIHoehe - 80, 180, 40)
    GUICtrlSetFont(-1,15, $FW_BOLD ,0)
    
    GUISetState(@SW_SHOW, $hGui)
    
    
     While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idBeenden
                _msgBox("Frage",_msg_Bild(4),_Msg_UETxt(2),_Msg_TxT(2),_Msg_OK(2),_Msg_No(2),_msg_Sound("Frage"))
            Case $idMsgNo
                ConsoleWrite("Button $idMsgBeenden"&@LF)
                GUISetState(@SW_HIDE, $hMsgBox)
            Case $idMsgOk
              ConsoleWrite("Button MsgOK"&@LF)
              Exit
        EndSwitch
     WEnd
    
    
    
     ;------------------- Funktionen -----------------------------------------------------------------------------------
    
    Func _msgBox($ID,$vPic,$vUETxt,$vMsgTxt,$Ok_Txt,$No_Txt,$vSound)
        Switch $ID
            Case "Fehler" ; Fehler
                GUICtrlSetBkColor($hMBGraphic,0xff0000)
                GUICtrlSetData($hMBLblKat, "Fehler:")
                GUICtrlSetBkColor($hMBLblKat,0xff0000)
                GUICtrlSetData($hMBLblBereich, $vUETxt)
                GUICtrlSetBkColor($hMBLblBereich,0xff0000)
                _SoundPlay($vSound)
            Case "Frage"   ; Frage
                GUICtrlSetBkColor($hMBGraphic,0x069395)
                GUICtrlSetData($hMBLblKat, "Frage:")
                 GUICtrlSetBkColor($hMBLblKat,0x069395)
                GUICtrlSetData($hMBLblBereich, $vUETxt)
                GUICtrlSetBkColor($hMBLblBereich,0x069395)
                _SoundPlay($vSound)
            Case "Info"  ; Info
                GUICtrlSetBkColor($hMBGraphic,0x10EB0B)
                GUICtrlSetData($hMBLblKat, "Information:")
                 GUICtrlSetBkColor($hMBLblKat,0x10EB0B)
                GUICtrlSetData($hMBLblBereich, $vUETxt)
                GUICtrlSetBkColor($hMBLblBereich,0x10EB0B)
                _SoundPlay($vSound)
        EndSwitch
    
        GUICtrlSetData($hMBLblInfo, $vMsgTxt)
        GUICtrlSetData($idMsgOk, $Ok_Txt)
        GUICtrlSetData($idMsgNo, $No_Txt)
        Local $hPrev = GUISwitch($hMsgBox)
        _GUICtrlPic_Create($vPic,20,120,120,120)
        GUISwitch($hPrev)
    
        GUISetState(@SW_SHOW, $hMsgBox)
    EndFunc
    
    Func _Msg_UETxt($Nr) ; Überschrift der MsgBox
        Switch $Nr
            Case 1
                $vTxt = "Zulauf Paket:  Eingabe 'EAN'!"
            Case 2
                $vTxt = "Programm beenden ?"
            Case 3
                $vTxt = "Prüfung Paket-Rücksendung!"
            Case 4
                $vTxt = "Zulauf Paket:  Eingabe 'Name'!"
            Case 5
                $vTxt = "Zulauf Paket:  Eingabe 'Lagerfach'!"
            Case 6
                $vTxt = "Zulauf Paket:  Eingabe 'Lagerfach'!"
            Case 7
                $vTxt = "Paketsuche ohne Erfolg!"
            Case 8
                $vTxt = "Paketsuche ohne Erfolg!"
            Case 9
                $vTxt = "Paketausgabe!"
        EndSwitch
        Return($vTxt)
    EndFunc
    
    Func _Msg_TxT($Nr) ; Text der MsgBox
        Switch $Nr
            Case 1
                $vTxt = "Die Länge des EAN - Codes stimmt nicht! Es müssen 16 Ziffern sein!"&@LF&@LF
                $vTxt &= "Bitte überprüfe Deine Eingabe!"
            Case 2
                $vTxt = "Soll das Programm beendet werden?"&@LF&@LF
                $vTxt &= "Die aktuellen Daten werden gespeichert."
            Case 3
                $vTxt = "Der Lagerbestand würde auf fällige Rücksendungen überprüft!"&@LF&@LF
                $vTxt &= "Bitte kontrolliere den Drucker auf die Rücksendeliste!"
            Case 4
                $vTxt = "Der Name des Paketempfängers ist nicht eingetragen!"&@LF&@LF
                $vTxt &= "Bitte prüfe Deine Eingabe"
            Case 5
                $vTxt = "Die Anzahl der Ziffern zum Lagerfach ist nicht richtig!"&@LF&@LF
                $vTxt &= "Es müssen zwei Ziffern sein. Bitte prüfe Deine Eingabe"
            Case 6
                $vTxt = "Das eingegebene Lagerfach ist nicht verfügbar!"&@LF&@LF
                $vTxt &= 'Siehe "Information zu den Lagerflächen" im Zulauffenster.'&@LF
                $vTxt &= 'Bitte prüfe Deine Eingabe.'
            Case 7
                $vTxt = "Das Paket mit dem EAN - Code  ist nicht vorhanden!"&@LF&@LF
                $vTxt &= "Das Paket ist entweder noch nicht eingetroffen oder die Lagerzeit war überschritten."
            Case 8
                $vTxt = "Das Paket mit dem Adressat  ist nicht vorhanden!"&@LF&@LF
                $vTxt &= "Das Paket ist entweder noch nicht eingetroffen oder die Lagerzeit war überschritten."
            Case 9
                $vTxt = "Soll das Paket"&@LF
                 $vTxt &= "EAN - Code: xyz"&@LF
                $vTxt &= "Name: Hans Irgenswas ausgetragen werden?"
        EndSwitch
        Return($vTxt)
    EndFunc
    
    Func _Msg_Ok($Nr)
        Switch $Nr
            Case 1
                $vTxt = "Zurück zum EAN-Code"
            Case 2
                $vTxt = "OK - Programmende"
            Case 3
                $vTxt = "OK und Zurück"
            Case 4
                $vTxt = 'Zurück zur Eingabe "Name"'
            Case 5
                $vTxt = 'Zurück zur Eingabe "Lagerfach"'
            Case 6
                $vTxt = 'Zurück zur Eingabe "Lagerfach"'
            Case 7
                $vTxt = 'Zurück zur Suche "EAN - Code"'
            Case 8
                $vTxt = 'Zurück zur Suche "Name"'
            Case 9
                $vTxt = 'Ja, Paket austragen'
        EndSwitch
        Return($vTxt)
     EndFunc
    
     Func _Msg_No($Nr)
        Switch $Nr
          Case 1
              $vTxt = "Beenden (ESC)"
           Case 2
              $vTxt = "Nein, zurück"
       EndSwitch
        Return($vTxt)
    EndFunc
    
    Func _msg_Bild($Nr)
        Switch $Nr
            Case 1 ; Fehler
                $vTxt = @ScriptDir&"\gfx\Achtung_1.png"
            Case 2 ; Frage
                $vTxt = @ScriptDir&"\gfx\Fragezeichen.png"
            Case 3 ; Info
                $vTxt = @ScriptDir&"\gfx\Info.png"
            Case 4 ; Exit
                $vTxt = @ScriptDir&"\gfx\Exit.png"
        EndSwitch
        Return($vTxt)
     EndFunc
    
    Func _msg_Sound($Nr)
       Switch $Nr
          Case "Fehler" ; Fehler
    ;~          $vTxT = $aSounds[1]
          Case "Frage"
    ;~          $vTxT = $aSounds[2]
          Case "Info"
    ;~          $vTxT = $aSounds[3]
       EndSwitch
    ;~     Return($vTxt)
    EndFunc
    
     ; #INTERNAL_USE_ONLY#=================================================================================================
    ; Name...........: _GUICtrlPic_Create
    ; Description ...: Creates a Picture control for the GUI
    ; Syntax ........: _GUICtrlPic_Create($sFilename, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1 , $iExStyle = -1)
    ; Parameters ....: $sFilename - Path of image file
    ; Author ........: UEZ
    ; Modified.......: Melba23, guinness, jpm
    ; Remarks .......: PNG image can be used.
    ; ====================================================================================================================
    Func _GUICtrlPic_Create($sFilename, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $iStyle = -1, $iExStyle = -1)
        _GDIPlus_Startup()
        Local $idPic = GUICtrlCreatePic("", $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle)
        Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFilename)
        If $iWidth = -1 Then $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
        If $iHeight = -1 Then $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
        Local $hBitmap_Resized = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
        Local $hBMP_Ctxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_Resized)
        _GDIPlus_GraphicsSetInterpolationMode($hBMP_Ctxt, $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC)
        _GDIPlus_GraphicsDrawImageRect($hBMP_Ctxt, $hBitmap, 0, 0, $iWidth, $iHeight)
        Local $hHBitmap = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap_Resized)
        Local $hPrevImage = GUICtrlSendMsg($idPic, $STM_SETIMAGE, 0, $hHBitmap) ; $STM_SETIMAGE = 0x0172
        _WinAPI_DeleteObject($hPrevImage); Delete Prev image if any
        _GDIPlus_BitmapDispose($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap_Resized)
        _GDIPlus_GraphicsDispose($hBMP_Ctxt)
        _WinAPI_DeleteObject($hHBitmap)
        _GDIPlus_Shutdown()
        Return $idPic
    EndFunc   ;==>_GUICtrlPic_Create
    Alles anzeigen
  • SciTE - covern von editor-Funktionen

    • BugFix
    • 15. August 2019 um 19:53

    Einige Editor-Funktionen basieren auf dem Wert der aktuellen Cursorposition. Man muss dann immer auf dieser Basis andere Funktionen aufrufen.

    Ich habe das mal in eine Funktionsgruppe integriert um etwas übersichtlicher und direkter die gewünschten Parameter abzufragen. Evtl. ist das auch für euch interessant.

    Python
    EdPos = {
        pos = function(self)
            return editor.CurrentPos
        end, -- current position
        linenum = function(self, _pos)
            return editor:LineFromPosition(_pos or self:pos())
        end, -- linenum from current (default) or passed position
        line = function(self, _linenum)
            return editor:GetLine(_linenum or self:linenum())
        end, -- contents of a line and the length of the line from current (default) or passed line
        home = function(self, _linenum)
            return editor:PositionFromLine(_linenum or self:linenum())
        end, -- home position from current (default) or passed line
        asc = function(self, _pos)
            return editor.CharAt[_pos or self:pos()]
        end, -- ascii value from character on current (default) or passed position
        chr = function(self, _pos)
            return string.char(self:asc(_pos))
        end, -- character on current (default) or passed position
        column = function(self, _pos)
            return editor.Column[_pos or self:pos()]
        end, -- column in line from current (default) or passed position
        style = function(self, _pos)
            return editor.StyleAt[_pos or self:pos()]
        end  -- style on current (default) or passed position
    }
    
    
    print('pos',    EdPos:pos())
    print('linenum',EdPos:linenum())
    print('line',   EdPos:line())
    print('home',   EdPos:home())
    print('asc',    EdPos:asc())
    print('chr',    EdPos:chr())
    print('column', EdPos:column())
    print('style',  EdPos:style())
    Alles anzeigen
  • Bestimmte zeilen aus Textdatei

    • BugFix
    • 15. August 2019 um 14:27

    Ich verstehe nicht, was du meinst. $aDetail[6][0] ?? Was soll das denn?

    Gib mal immer ein Bsp. der Datei, wie sie aussieht und was du davon verwenden willst.

  • Bestimmte zeilen aus Textdatei

    • BugFix
    • 15. August 2019 um 12:05

    Das Bsp. selber funktioniert, wie du es wünschst:

    example.JPG

    Falls der Aufbau deiner Datei von deinem gezeigten Muster abweicht, greift natürlich das Pattern nicht mehr. Da muss man natürlich wissen, wie die Datei aussehen kann.

  • Bibliothek im Editor öffnen

    • BugFix
    • 15. August 2019 um 11:07
    Zitat von BugFix

    Die Zeile local core = require "alien.core" wird in der Verarbeitung von require zu local core = require "alien" eingedampft.

    Das hatte ich wohl falsch interpretiert.

    Wie mir jetzt klar wurde, bedeutet der Punkt schlicht und einfach: "this folder" und gibt an, dass die nachfolgend benannte Datei aus diesem Ordner geladen werden soll. Ist ja auch sinnvoll, da einige Bibliotheken selbst zusätzliche, nur für diesen Zweck gültige, Bibliotheken nachladen, die aber namentlich mit anderen Bibliotheken identisch sind (core, struct). So bleibt ordentlich beisammen, was zusammen gehört.

    Die Funktionsweise habe ich jetzt im Skript im Startpost angepasst. -- Noch ergänzt um Erkennung von Mehrfach-require in einer Zeile.

  • Bestimmte zeilen aus Textdatei

    • BugFix
    • 15. August 2019 um 09:46

    Kannst du auch so lösen:

    Python
    ;~ Local $sFile = 'C:\bla\blub.txt'
    ;~ Local $sRead = FileRead($sFile)
    
    ; zum Test Simulation von FileRead:
    Local $sRead = _
    '10;135.01.052.00;2;504194;2.19.050' & @CRLF & _
    '80;135.09.082.00;2;509644;2.19.080' & @CRLF & _
    '110;185.15.112.00;2;503741;2.19.077' & @CRLF & _
    '610;185.15.112.00;1;305489;2.18.100' & @CRLF & _
    '650;185.15.112.00;1;305889;2.18.101' & @CRLF & _
    '630;185.15.112.00;1;305989;2.18.102' & @CRLF
    
    ; Zeilen mit der gewünschten IP in ein Array auslesen
    Local $sPattern = '\d+;185\.15\.112\.00[^\n]+'
    Local $aLines = StringRegExp($sRead, $sPattern, 3)
    
    ; wenn Zeilen gefunden -> 2D Array mit allen Einzelwerten erstellen
    ; oder statt in 2D Array zu schreiben, gleich die Einzelwerte in deine GUI eintragen
    If IsArray($aLines) Then
        Local $aDetail[UBound($aLines)][5]
        Local $aSplit
        For $i = 0 To UBound($aLines) -1
            $aSplit = StringSplit($aLines[$i], ';', 2)
            For $j = 0 To UBound($aSplit) -1
                $aDetail[$i][$j] = $aSplit[$j]
            Next
        Next
        _ArrayDisplay($aDetail)
    EndIf
    Alles anzeigen

    EDIT:

    Wenn ich das richtig interpretiere ist die Anzahl der Treffer in der Datei unterschiedlich. Dann solltest du in der GUI die Werte als Liste/Listview (dynamische Ctrl) eintragen oder musst die GUI bei Verwendung von Label (statische Ctrl) selbst dynamisch gestalten. Dafür mal ein Bsp. aus meiner Sammlung:

    Python: Bsp. Gui Anzahl Ctrl dynamisch
    Global $GUI, $aInput[2] = [1], $btAdd
    
    $GUI = GUICreate('Test', 400, 50)
    $aInput[1] = GUICtrlCreateInput('', 10, 10, 300, 21)
    GUICtrlSetResizing(-1, 802) ; $GUI_DOCKALL
    $btAdd = GUICtrlCreateButton('Add Input', 320, 10, 70, 21)
    GUICtrlSetResizing(-1, 802) ; $GUI_DOCKALL
    GUISetState()
    
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $btAdd
                _NewCtrl()
        EndSwitch
    WEnd
    
    Func _NewCtrl()
        Local $iDiff = 31     ; == Abstand + Höhe ==> 10 + 21
        Local Static $iY = 10 ; == Startwert vom ersten Ctrl
        $iY += $iDiff
        $aInput[0] += 1
        ReDim $aInput[$aInput[0]+1]
        Local $aWin = WinGetPos($GUI)
        WinMove($GUI, '', $aWin[0], $aWin[1], $aWin[2], $aWin[3] + 31)
        $aInput[$aInput[0]] = GUICtrlCreateInput('', 10, $iY, 300, 21)
        GUICtrlSetResizing(-1, 802) ; $GUI_DOCKALL
    EndFunc
    Alles anzeigen
  • Exitloop wird nicht ausgeführt...

    • BugFix
    • 13. August 2019 um 23:44

    Hier mal ein Skript aus meiner Sammlung, zum Wechseln von Ctrl zu Ctrl mittels ENTER.

    Das Skript arbeitet im OnEventMode. Da kannst du deine Aläufe entsprechend anpassen und integrieren.

    C
    ;-- TIME_STAMP   2012-06-03 18:11:17
    
    
    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <Array.au3>
    Opt("GUIOnEventMode", 1)
    OnAutoItExitRegister('OnAutoItExit')
    
    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    Global $active = False, $gui, $ID_lastFocus = 0
    Enum $i1, $i2, $c1, $i3, $c2, $i4, $n ; <== hier die Reihenfolge, wie der Fokus 'wandern' soll ($n ist Zähler für Anz. Ctrl)
    Global $a[$n]
    
    $gui = GUICreate('')
    GUISetOnEvent(-3, '_ende')
    $a[$i1] = GUICtrlCreateInput('', 10,10,40)
    $a[$i2] = GUICtrlCreateInput('', 60,10,40)
    $a[$c1] = GUICtrlCreateCombo('', 110,10,40)
    $a[$i3] = GUICtrlCreateInput('', 160,10,40)
    $a[$c2] = GUICtrlCreateCombo('', 210,10,40)
    $a[$i4] = GUICtrlCreateInput('', 260,10,40)
    GUISetState()
    
    
    While 1
        If BitAND(WinGetState($gui), 8) Then
            $active = True
        Else
            $active = False
        EndIf
        Sleep(100)
    WEnd
    
    Func _ende()
        Exit
    EndFunc
    
    ;===========================================================
    ; callback function
    ;===========================================================
    Func _KeyProc($nCode, $wParam, $lParam)
        Local $tKEYHOOKS, $vkCode, $ID, $index
        $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
        If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
        $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
        If $wParam = $WM_KEYDOWN And $vkCode = 13 Then ; ENTER gedrückt
            $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, '', ControlGetFocus($gui)))
            ; Für ComboBoxen kann NICHT der Fokus abgefragt werden, da dieser auf dem Input-Ctrl der ComboBox liegt.
            ; Hier muߠin der Instanz-Reihenfolge mit dem Wert des letzten Ctrl verglichen werden.
            ; Die Reihenfolge der Erstellung in der GUI ist egal, da der Fokus für die enumerierte Reihenfolge der Ctrl-Variablen
            ; weitergesetzt wird.
            ; Falls eine ComboBox als letztes Ctrl in der Folge erscheint, muss dies in der Abfragelogik berücksichtigt werden.
            If _WinAPI_GetClassName($ID) <> 'Edit' Then
                ; Variante 1: über Class+Instance
                $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:1]"))
                If $ID_lastFocus > $ID Then $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:2]"))
                ; Variante 2: über Enumerations-Reihenfolge der ComboCtrls
    ;~             $ID = $a[$c1]
    ;~             If $ID_lastFocus > $ID Then $ID = $a[$c2]
            EndIf
            $index = _ArraySearch($a, $ID)
            If @error Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
            If $index < UBound($a)-1 Then
                GUICtrlSetState($a[$index +1], $GUI_FOCUS)
                $ID_lastFocus = $a[$index +1]
            Else
                GUICtrlSetState($a[0], $GUI_FOCUS)
                $ID_lastFocus = $a[0]
            EndIf
        EndIf
        Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc
    
    Func OnAutoItExit()
        _WinAPI_UnhookWindowsHookEx($hHook)
        DllCallbackFree($hStub_KeyProc)
    EndFunc
    Alles anzeigen
  • Exitloop wird nicht ausgeführt...

    • BugFix
    • 13. August 2019 um 21:24

    Oui, oui, oui :huh:

    bevor ich irgendwie näher auf dein Problem eingehe: Schau dir bitte mal die Bsp. zu GuiCreate etc. an.

    Du erstellst in einer Schleife immer wieder GUI und Controls! Das macht man einmalig vor dem Mainloop.

    Alle anderen Probleme resultieren mit Sicherheit daraus.

    Was soll übrigens dein While 1, While 2, ... bedeuten? Ich vermute dir ist die Funktion der Schleifen nicht ganz klar. Du brauchst nur eine einzige Schleife in der du alle Ereignisse auswertest.

  • WinPESE

    • BugFix
    • 12. August 2019 um 21:53

    Probier mal als WorkingDir nicht @ScriptDir, sondern @SystemDir.

  • Pfad - vor oder nach einem Backslash etwas einfügen

    • BugFix
    • 12. August 2019 um 12:08

    Die Position des gewünschten Backslash ermitteln. Dann kannst du dort ersetzen (String- Funktionen).

    Python
    $sText = "c:\1\2\3\4\5\test.txt"
    $pos1 = StringInStr($sText, '\', 0, 1)
    $pos2 = StringInStr($sText, '\', 0, 2)
    $posLetzter = StringInStr($sText, '\', 0, -1)
    $posVorLetzter = StringInStr($sText, '\', 0, -2)
  • DirExists?

    • BugFix
    • 11. August 2019 um 17:10

    Gibt ja noch das FileSystemObject:

    Python
    Global $sPathWin = @WindowsDir
    Global $sPathNotExists = 'C:\Fantasy'
    
    ConsoleWrite('_DirExists($sPathWin)       ' & _DirExists($sPathWin) & @CRLF)
    ConsoleWrite('_DirExists($sPathNotExists) ' & _DirExists($sPathNotExists) & @CRLF)
    
    Func _DirExists($_sDir)
        Local Static $oFileSystem = ObjCreate('Scripting.FileSystemObject')
        Return $oFileSystem.FolderExists($_sDir)
    EndFunc

    Edit:

    Noch eine Variante

    Python
    Func _DirExists($_sDir)
        Local $aRet = DllCall('shlwapi.dll', 'bool', 'PathIsDirectoryW', 'wstr', $_sDir)
        Return ($aRet[0] > 0 ? True : False)
    EndFunc
  • Lokale Variablen auf 1 Script beschränken

    • BugFix
    • 9. August 2019 um 16:58

    Na genau diese 'Aufbewahrungsfunktion' ist doch mein _Obj/_ArrVarsHandler.

    Static Variablen behalten ihren Wert auch nach dem Funktionsaufruf. Innerhalb der Funktion als Local Static sind es somit Lokale Variablen die man aus der Funktion abfragen und die man ändern kann. Genau was du willst.

  • Lokale Variablen auf 1 Script beschränken

    • BugFix
    • 9. August 2019 um 10:15

    Wir hatten vor viiiiielen Jahren mal eine Diskussion zur Vermeidung Globaler Variablen. Da hatte ich zwei Funktionen zum Variablenmanagement erstellt (tun beide dasselbe), um alle Variablen im Lokalen Namespace einer Funktion zu halten. Die Variablen werden intern im Skript als Strings verwendet.

    Python
    ConsoleWrite('Summe    ' & _ObjVarsHandler('Summe')  & @CRLF)
    ConsoleWrite('_Add(5)  ' & _AddVal(5) & @CRLF)
    ConsoleWrite('_Add(13) ' & _AddVal(13) & @CRLF)
    ConsoleWrite('_Sub(3)  ' & _SubVal(3) & @CRLF)
    ConsoleWrite('_Sub(5)  ' & _SubVal(5) & @CRLF)
    
    
    Func _AddVal($a)
        Local $Summe = _ObjVarsHandler('Summe')      ; == Wert abfragen
        If @error Then                               ; == $Summe wurde noch nicht verwendet - noch ohne Wert
            _ObjVarsHandler('Summe', False, $a)      ; == Wert setzen
        Else
            _ObjVarsHandler('Summe', False, $Summe + $a)
        EndIf
        Return _ObjVarsHandler('Summe')
    EndFunc
    
    
    Func _SubVal($a)
        Local $Summe = _ObjVarsHandler('Summe')
        If @error Then
            _ObjVarsHandler('Summe', False, -1*$a)
        Else
            _ObjVarsHandler('Summe', False, $Summe - $a)
        EndIf
        Return _ObjVarsHandler('Summe')
    EndFunc
    
    ;===============================================================================
    ; Function Name....: _ObjVarsHandler
    ; Description......: Verwaltung von global anwendbaren Variablen in Lokalem Namespace
    ; Parameter(s).....: $_sVar   Variablenname als String (mit oder ohne "$")
    ; .................: $_bGet   "True" (Standard) fragt Wert ab, "False" um Wert zu setzen
    ; .................: $_vVal   Wenn Wert gesetzt wird, der Variablenwert
    ; Return Value(s)..: (nur bei Get) Erfolg   Der Variablenwert
    ; .................:               Fehler   0 @error=1  angefragte Variable noch nicht hinterlegt
    ; Author(s)........: BugFix ( bugfix@autoit.de )
    ;===============================================================================
    Func _ObjVarsHandler($_sVar, $_bGet=True, $_vVal=0)
        Local Static $oVars = ObjCreate("Scripting.Dictionary")
        If $_bGet Then
            If $oVars.Exists($_sVar) Then Return $oVars.Item($_sVar)
            Return SetError(1,0,0)
        EndIf
        If $oVars.Exists($_sVar) Then
            $oVars.Item($_sVar) = $_vVal
        Else
            $oVars.Add($_sVar, $_vVal)
        EndIf
    EndFunc  ;==>_ObjVarsHandler
    
    ;===============================================================================
    ; Function Name....: _ArrVarsHandler
    ; Description......: Verwaltung von global anwendbaren Variablen in Lokalem Namespace
    ; Parameter(s).....: $_sVar   Variablenname als String (mit oder ohne "$")
    ; .................: $_bGet   "True" (Standard) fragt Wert ab, "False" um Wert zu setzen
    ; .................: $_vVal   Wenn Wert gesetzt wird, der Variablenwert
    ; Return Value(s)..: (nur bei Get) Erfolg   Der Variablenwert
    ; .................:               Fehler   0 @error=1  angefragte Variable noch nicht hinterlegt
    ; Author(s)........: BugFix ( bugfix@autoit.de )
    ;===============================================================================
    Func _ArrVarsHandler($_sVar, $_bGet=True, $_vVal=0)
        Local Static $aVars[1][2]
        Local $aTmp[1][2], $bMatch = False
        If $_bGet Then
            If Not IsArray($aVars) Then Return SetError(1,0,0)
            For $i = 0 To UBound($aVars) -1
                If $aVars[$i][0] = $_sVar Then Return $aVars[$i][1]
            Next
            Return SetError(1,0,0)
        EndIf
        $aTmp = $aVars
        For $i = 0 To UBound($aTmp) -1
            If $aTmp[$i][0] = $_sVar Then
                $bMatch = True
                $aTmp[$i][1] = $_vVal
                ExitLoop
            EndIf
        Next
        If Not $bMatch Then
            ReDim $aTmp[UBound($aTmp)+1][2]
            $aTmp[UBound($aTmp)-1][0] = $_sVar
            $aTmp[UBound($aTmp)-1][1] = $_vVal
        EndIf
        $aVars = $aTmp
    EndFunc  ;==>_ArrVarsHandler
    Alles anzeigen
  • Lokale Variablen auf 1 Script beschränken

    • BugFix
    • 8. August 2019 um 22:24

    Es gibt nur einen Global scope.

    Skripte die eingebunden werden, stellen somit ihre globalen Variablen in diesen scope. Das kannst du nicht verhindern. Deshalb werden in UDF meist identifizierende Namenszusätze verwendet.

  • Diskussion zu: FAQ SciTE Editor

    • BugFix
    • 1. August 2019 um 18:19
    Zitat von Professor Bernd

    Den Thread hier zu finden ist gar nicht leicht. Könntest du den im Thread "FAQ - SciTE Editor" verlinken, z. B. Im Posting #11?

    He, He - das war das Erste, was ich nach dem Verschieben der Posts in diesen Thread getan habe. Beide Threads sind wechselseitig miteinander verlinkt:

    Zitat von FAQ - SciTE Editor / Startpost


    (Die Frage-Antwort-Posts werde ich der Übersichtlichkeit halber danach entfernen --> verschieben: Link )

    Zitat von dieser Thread / Startpost

    Da in der FAQ ( Link ) Diskussionen entstehen

    8o

  • strg-Taste bleibt gedrückt

    • BugFix
    • 1. August 2019 um 12:13

    Ich würde das völlig anders lösen. Nicht warten bis die Tasten released sind, sondern sie freigeben und Send() abschicken.

    Python
     Func _SendSave($_s)
        Local Const $iBitMask = 0x8000
        Local $hUser32 = DllOpen("user32.dll")
        If BitAnd(DllCall($hUser32, "short", "GetAsyncKeyState", "int", 0x10)[0], $iBitMask) <> 0 Then _keybd_event(0x10, 0x2, $hUser32)
        If BitAnd(DllCall($hUser32, "short", "GetAsyncKeyState", "int", 0x11)[0], $iBitMask) <> 0 Then _keybd_event(0x11, 0x2, $hUser32)
        If BitAnd(DllCall($hUser32, "short", "GetAsyncKeyState", "int", 0x12)[0], $iBitMask) <> 0 Then _keybd_event(0x12, 0x2, $hUser32)
        DllClose($hUser32)
        Send($_s)
    EndFunc
    
    Func _keybd_event($vkCode, $Flag=0, $_dll='user32.dll')
        DllCall($_dll, 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', $Flag, 'ptr', 0)
    EndFunc
    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™