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

  • Colortable

    • BugFix
    • 25. Juli 2022 um 10:40

    Neue Version mit ausgeblendetem Fensterhintergrund in Post #1

  • [Erledigt] Kann man bei SciTE den Compiler austauschen, der mit Ctrl+F7 aufgerufen wird?

    • BugFix
    • 25. Juli 2022 um 08:36
    Zitat von Alina

    wenn ein zweiter Compiler bei SciTE über eine Tastenkombination zur Verfügung stehen könnte.

    Erst mal grundlegend:

    Die hinterlegten Aufrufe für Starten <F5>, Kompilieren <Ctrl+F7> und Erstellen <F7> findest du in der au3.properties.

    Jeweils als

    command.go...

    command.compile...

    command.build...

    Die Hotkeys für diese Befehle sind in allen Programmiersprachen, für die du SciTE nutzt, identisch und deshalb fix hinterlegt. Daher tauchen diese auch in der *.properties nicht auf.

    Die o. a. Aufrufe nutzen den AutoIt3Wrapper und sind somit für dich nur bedingt nützlich. Du musst schauen, welche Kommandozeilenparameter dein Compiler erwartet und dir entsprechend den Aufrufstring erstellen.

    Vorstellbar wäre z.B. "Pfad_Compiler.exe /in Pfad_zu_kompilierende_Au3"  (Für /out wird meist automatisch der Dateiname von /in als exe genutzt. Evtl. brauchst du auch keine Schlüsselwörter und nur die Reihenfolge der Parameter ist maßgebend.)

    In deiner SciTEUser.properties musst du nun dafür einen eigenen Befehlsblock mit Hotkey definieren:

    .properties
    command.name.49.$(au3)=Extra Compiler
    command.49.$(au3)="PFAD_COMPILER" /in "$(FilePath)"
    command.mode.49.$(au3)=savebefore:yes,subsystem:windows
    command.shortcut.49.$(au3)=FREIER_HOTKEY

    Falls der Compiler ohne Fenster startet, also ein reines Kommandozeilentool ist, verwende in der Zeile "command.mode" subsystem:console.

    Die hier verwendete Befehlsnummer (49) musst du ggf. anpassen und eine bei dir freie Nummer nutzen.

    Aber nochmal der Hinweis: Wenn der Compiler nicht von Jos freigegeben ist, halte ich dessen Nutzung für illegal.

  • [Erledigt] Kann man bei SciTE den Compiler austauschen, der mit Ctrl+F7 aufgerufen wird?

    • BugFix
    • 24. Juli 2022 um 00:11
    Zitat von Alina

    Ja, ich möchte einen anderen Compiler langfristiger ausprobieren.

    Es geht rein darum weiter au3-Dateien her zu stellen

    :?:

    Ein anderer AutoIt Compiler?

    Wo stammt der denn her?

    Und nicht ganz unwichtig: Ist er autorisiert? - Kann ich mir nicht vorstellen.

  • [Erledigt] Kann man bei SciTE den Compiler austauschen, der mit Ctrl+F7 aufgerufen wird?

    • BugFix
    • 23. Juli 2022 um 08:34
    Zitat von Alina

    Kann man bei SciTE den Compiler austauschen, der mit Ctrl+F7 aufgerufen wird? Was noch besser wäre, wenn ein zweiter Compiler bei SciTE über eine Tastenkombination zur Verfügung stehen könnte.

    Hast du einen anderen AutoIt Compiler? ;)

    Oder möchtest du für eine andere Sprache SciTE als Editor nutzen und auch Kompilieren?

    Ja, das ist durchaus möglich und für die reine Compileranweisung auch unkompliziert. Wenn du zusätzlich Features wie Syntax Highlighting, Abbrev etc. möchtest ist es deutlich mehr Aufwand.

  • Colortable

    • BugFix
    • 23. Juli 2022 um 08:24
    Zitat von Alina

    Dient es dazu zu sehen welche Farben man hat?

    Nein, beim Schreiben des Skriptes soll es dir vereinfachen Farben für die Fläche / Controls zu wählen.

    Bei Mehrfachnutzung der Farbe sinnvoll als Variablenzuweisung mit Farbnamen, oder den Farbwert direkt in eine Funktion einsetzen.

  • Colortable

    • BugFix
    • 22. Juli 2022 um 19:48
    Zitat von Oscar

    Gefällt mir, aber warum der Hook?

    Ursprünglich wollte ich eine Tastenkombination mit Maus nutzen, dafür hatte ich den Hook. Habe es dann doch auf R-/L-Klick begrenzt und nur den Rest gelöscht.

    Aber klar, so reichen die GUI_EVENT_.

  • Colortable

    • BugFix
    • 22. Juli 2022 um 18:32

    Bevor ihr mich steinigt - natürlich weiß ich, dass es Farbtabellen, Farbmixer, Wizards etc. en masse gibt, hab ja selbst einige erstellt. ^^

    Warum habe ich nun trotzdem was Neues gemacht? Ich werde älter, die Augen schwächer und da wollte ich die Farben auf großen Flächen sehen und auch gern eine gängige Auswahl auf einen Blick.
    Ich habe die Farben etwas gruppiert.

    Das dient dazu, beim Gestalten von Programmen schnell die passenden Farben für Gui und/oder Controls zu finden.

    Mit Mausklick links wird der Hexwert (z.B. 0xE0FFFF) und mit Mausklick rechts die Zuweisung (z.B. $LightCyan = 0xE0FFFF) in die Zwischenablage kopiert. Anschließend wird das Fenster geschlossen.

    EDIT 2022-07-25:

    - Umgestellt auf Msg-Events für Maus-Up

    - Fensterhintergrund ausgeblendet (kann deaktiviert werden durch Auskommentieren der Zeile #204)

    AutoIt: ColorTable.au3
    ;-- TIME_STAMP   2022-07-25 10:13:35   v 0.1
    
    
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPIGdi.au3>
    #include <WinAPIHObj.au3>
    #include <WindowsConstants.au3>
    
    
    Global $aColors[][2] = [ _
    ["Maroon",0x800000],       _
    ["DarkRed",0x8B0000],      _
    ["Brown",0xA52A2A],        _
    ["FireBrick",0xB22222],    _
    ["Crimson",0xDC143C],      _
    ["IndianRed",0xCD5C5C],    _
    ["Red",0xFF0000],          _
    ["OrangeRed",0xFF4500],    _
    ["Tomato",0xFF6347],       _
    ["Coral",0xFF7F50],        _
    ["LightCoral",0xF08080],   _
    ["Salmon",0xFA8072],       _
    ["DarkSalmon",0xE9967A],   _
    ["LightSalmon",0xFFA07A],  _
    ["DarkOrange",0xFF8C00],   _
    ["Orange",0xFFA500],       _
    ["DarkGoldenrod",0xB8860B], _
    ["Goldenrod",0xDAA520],    _
    ["Gold",0xFFD700],         _
    ["Yellow",0xFFFF00],       _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["SaddleBrown",0x8B4513],  _ ; new block
    ["Sienna",0xA0522D],       _
    ["Chocolate",0xD2691E],    _
    ["Peru",0xCD853F],         _
    ["SandyBrown",0xF4A460],   _
    ["RosyBrown",0xBC8F8F],    _
    ["Tan",0xD2B48C],          _
    ["BurlyWood",0xDEB887],    _
    ["Wheat",0xF5DEB3],        _
    ["Moccasin",0xFFE4B5],     _
    ["PeachPuff",0xFFDAB9],    _
    ["NavajoWhite",0xFFDEAD],  _
    ["Bisque",0xFFE4C4],       _
    ["BlanchedAlmond",0xFFEBCD], _
    ["PapayaWhip",0xFFEFD5],   _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["DarkGreen",0x006400],    _ ; new block
    ["Green",0x008000],        _
    ["ForestGreen",0x228B22],  _
    ["SeaGreen",0x2E8B57],     _
    ["MediumSeaGreen",0x3CB371], _
    ["MediumAquamarine",0x66CDAA], _
    ["LimeGreen",0x32CD32],    _
    ["Lime",0x00FF00],         _
    ["Chartreuse",0x7FFF00],   _
    ["LawnGreen",0x7CFC00],    _
    ["GreenYellow",0xADFF2F],  _
    ["MediumSpringGreen",0x00FA9A], _
    ["SpringGreen",0x00FF7F],  _
    ["LightGreen",0x90EE90],      _
    ["PaleGreen",0x98FB98],       _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["Olive",0x808000],        _
    ["DarkOliveGreen",0x556B2F],  _ ; new block
    ["OliveDrab",0x6B8E23],       _
    ["YellowGreen",0x9ACD32],  _
    ["DarkSeaGreen",0x8FBC8F],    _
    ["Teal",0x008080],            _
    ["DarkCyan",0x008B8B],        _
    ["LightSeaGreen",0x20B2AA],   _
    ["DarkTurquoise",0x00CED1],   _
    ["MediumTurquoise",0x48D1CC], _
    ["Turquoise",0x40E0D0],       _
    ["Aquamarine",0x7FFFD4],      _
    ["Aqua",0x00FFFF],            _
    ["Cyan",0x00FFFF],            _
    ["PaleTurquoise",0xAFEEEE], _
    ["LightCyan",0xE0FFFF], _
    ["Azure",0xF0FFFF], _
    ["AliceBlue",0xF0F8FF], _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["DarkKhaki",0xBDB76B], _ ; new block
    ["Khaki",0xF0E68C], _
    ["PaleGoldenrod",0xEEE8AA], _
    ["LemonChiffon",0xFFFACD], _
    ["LightGoldenrodYellow",0xFAFAD2], _
    ["Cornsilk",0xFFF8DC], _
    ["LightYellow",0xFFFFE0], _
    ["Beige",0xF5F5DC], _
    ["Ivory",0xFFFFF0], _
    ["Honeydew",0xF0FFF0], _
    ["MintCream",0xF5FFFA], _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["MidnightBlue",0x191970],    _ ; new block
    ["Navy",0x000080],            _
    ["DarkBlue",0x00008B],        _
    ["MediumBlue",0x0000CD],      _
    ["Blue",0x0000FF],            _
    ["RoyalBlue",0x4169E1],       _
    ["DodgerBlue",0x1E90FF],      _
    ["DeepSkyBlue",0x00BFFF],     _
    ["CornflowerBlue",0x6495ED],  _
    ["SkyBlue",0x87CEEB],         _
    ["LightSkyBlue",0x87CEFA],    _
    ["LightSteelBlue",0xB0C4DE],  _
    ["DarkSlateBlue",0x483D8B],   _
    ["SlateBlue",0x6A5ACD],       _
    ["MediumSlateBlue",0x7B68EE], _
    ["SteelBlue",0x4682B4],       _
    ["CadetBlue",0x5F9EA0],       _
    ["PowderBlue",0xB0E0E6],      _
    ["LightBlue",0xADD8E6],       _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ['',0xF0F0F0],  _
    ["Indigo",0x4B0082],          _ ; new block
    ["BlueViolet",0x8A2BE2], _
    ["MediumPurple",0x9370DB], _
    ["DarkViolet",0x9400D3], _
    ["DarkOrchid",0x9932CC], _
    ["MediumOrchid",0xBA55D3], _
    ["Orchid",0xDA70D6], _
    ["Purple",0x800080], _
    ["DarkMagenta",0x8B008B], _
    ["MediumVioletRed",0xC71585], _
    ["PaleVioletRed",0xDB7093], _
    ["DeepPink",0xFF1493], _
    ["HotPink",0xFF69B4], _
    ["Fuchsia",0xFF00FF], _
    ["Magenta",0xFF00FF], _
    ["Violet",0xEE82EE], _
    ["Plum",0xDDA0DD], _
    ["Thistle",0xD8BFD8], _
    ["Lavender",0xE6E6FA], _
    ["Pink",0xFFC0CB], _
    ["LightPink",0xFFB6C1], _
    ["MistyRose",0xFFE4E1],    _
    ["LavenderBlush",0xFFF0F5], _
    ["Black",0x000000], _ ; new block
    ["DarkSlateGray",0x2F4F4F], _
    ["SlateGray",0x708090], _
    ["LightSlateGray",0x778899], _
    ["DimGray",0x696969], _
    ["Gray",0x808080], _
    ["DarkGray",0xA9A9A9], _
    ["Silver",0xC0C0C0], _
    ["LightGray",0xD3D3D3], _
    ["Gainsboro",0xDCDCDC], _
    ["AntiqueWhite",0xFAEBD7], _
    ["Linen",0xFAF0E6],        _
    ["OldLace",0xFDF5E6],      _
    ["FloralWhite",0xFFFAF0],  _
    ["Snow",0xFFFAFA], _
    ["GhostWhite",0xF8F8FF], _
    ["WhiteSmoke",0xF5F5F5], _
    ["White",0xFFFFFF] _
    ]
    
    Global $aLabel[UBound($aColors)], $w = 185, $x = -$w, $y = -30
    
    Global $hGui = GUICreate('', 1489, 715, @DesktopWidth-1489, 0, 0x80000000)
    GUISetFont(12, 400, Default, 'Consolas')
    For $i = 0 To UBound($aColors) -1
        $x = Mod($i, 23) = 0 ? ($x+$w+1) : $x
        $y = Mod($i, 23) = 0 ? 1 : ($y+30+1)
        $aLabel[$i] = GUICtrlCreateLabel($aColors[$i][0], $x, $y, $w, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
        _GuiCtrl_SetColorContrast(-1, $aColors[$i][1])
    Next
    
    _GuiHole($hGui)     ; Auskommentieren für sichtbaren Fensterhintergrund
    
    GUISetState()
    
    Global $gMsg, $IDclick, $aColorClick, $sClip
    
    
    While True
        $gMsg = GUIGetMsg()
        Switch $gMsg
            Case -3
                Exit
            Case $GUI_EVENT_PRIMARYUP, $GUI_EVENT_SECONDARYUP
                $IDclick = GUIGetCursorInfo($hGui)[4]
                $aColorClick = _GetColor($IDclick)
                If $aColorClick[0] <> '' Then
                    $sClip = '$' & $aColorClick[0] & ' = 0x' & Hex($aColorClick[1],6)
                    If $gMsg = $GUI_EVENT_PRIMARYUP Then $sClip = '0x' & Hex($aColorClick[1],6)
                    Exit ClipPut($sClip)
                EndIf
        EndSwitch
    WEnd
    
    
    Func _GetColor($_ID)
        Local $index = $_ID - $aLabel[0]
        Local $aRet[] = [$aColors[$index][0],$aColors[$index][1]]
        Return $aRet
    EndFunc
    
    
    ; #FUNCTION# =======================================================================================
    ; Name ..........: _GuiCtrl_SetColorContrast
    ; Description ...: Sets the background color for a control and depending on its brightness the
    ; ...............: appropriate contrast color for the text.
    ; Parameter(s)...: $_ID           The control ID
    ; ...............: $_BkCol        The background color
    ; ....[optional].: $_ColOnDark    The text color if BG is dark (Default: -1, almost white)
    ; ....[optional].: $_colOnBright  The text color if BG is bright (Default: -1, very deep blue)
    ; Return values .: Success  1
    ; ...............: Failure  0
    ; Author ........: BugFix
    ; ==================================================================================================
    Func _GuiCtrl_SetColorContrast($_ID, $_BkCol, $_ColOnDark=-1, $_colOnBright=-1)
        $_ColOnDark = $_ColOnDark = -1 ? 0xFAFAFA : $_ColOnDark
        $_colOnBright = $_colOnBright = -1 ? 0x000088 : $_colOnBright
        GUICtrlSetBkColor($_ID, $_BkCol)
        ; get contrast
        Local $R = BitAND(BitShift($_BkCol, 16), 0xFF)
        Local $G = BitAND(BitShift($_BkCol, 8), 0xFF)
        Local $B = BitAND($_BkCol, 0xFF)
        Local $Brightness = Sqrt($R^2*0.299 + $G^2*0.587 + $B^2*0.114)
    ;~     Local $iCol = $Brightness < 128 ? $_ColOnDark : $_colOnBright
        Local $iCol = $Brightness < 140 ? $_ColOnDark : $_colOnBright
        Return GUICtrlSetColor($_ID, $iCol)
    EndFunc
    
    
    Func _GuiHole($h_win)
        Local $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
        _AddCtrlRegion($combined_rgn, $aLabel)
        _WinAPI_SetWindowRgn($h_win, $combined_rgn)
        _WinAPI_DeleteObject($combined_rgn)
    EndFunc   ;==>_GuiHole
    
    
    Func _AddCtrlRegion($full_rgn, $ctrl_id)
        Local $ctrl_pos, $ctrl_rgn
        If IsArray($ctrl_id) Then
            For $i = 0 To UBound($ctrl_id) -1
                If GUICtrlRead($ctrl_id[$i]) = '' Then ContinueLoop
                $ctrl_pos = ControlGetPos($hGui, "", $ctrl_id[$i])
                $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
                _WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
                _WinAPI_DeleteObject($ctrl_rgn)
            Next
        Else
            $ctrl_pos = ControlGetPos($hGui, "", $ctrl_id)
            $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
            _WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
            _WinAPI_DeleteObject($ctrl_rgn)
        EndIf
    EndFunc   ;==>_AddCtrlRegion
    Alles anzeigen

    color_table.PNG color_table_hole.PNG

    DL bisher: 15

    Dateien

    ColorTable.au3 8,83 kB – 260 Downloads
  • Farbänderung von Label bei AdlibRegistering

    • BugFix
    • 21. Juli 2022 um 18:20

    Zu einem ähnlichem Problem von dir (aber Aufgabenstellung: checke und zeige Änderung) hatte ich bereits hier ein Bsp. gepostet. Kannst du doch anpassen.

    Übrigens:

    NIE Globale Variablen in einer Funktion deklarieren und schon gar nicht immer wieder dieselbe Variable neu deklarieren: 1-mal am Skriptstart deklarieren, danach nur noch Wertzuweisung.

  • LimeSurvey Remote API json

    • BugFix
    • 21. Juli 2022 um 11:38
    Zitat von gmmg

    bzw. diese Datensätze in 2 Variablen.

    Beide in je ein Array splitten - die Arrays haben dann dieselbe Größe.

    - In einer Schleife über Array_mit_Zusatz iterieren

    - je Item:

    - Inhalt bis "firstname" abschneiden

    - Item von Array_ohne_Zusatz (hat identischen Index an dieser Position) vor "firstitem" einfügen: $a_m_Zusatz[$i] = $a_o_Zusatz[$i] & "$a_m_Zusatz[$i] ab <firstname>" - das zusätzliche Semikolon dazwischen beachten

  • GUICtrlCreateIcon mit png-Datei

    • BugFix
    • 21. Juli 2022 um 11:15
    Zitat von DOheim

    musste das aber wieder verwerfen, weil dort der Befehl FileRead so verändert wurde, dass man beispielsweise eine Bitmap-Datei nicht mehr einlesen konnte - so wie sie ist. Sie wird in Hex-Zeichen umgewandelt.

    Wie sieht denn deiner Meinung nach eine (Bitmap)-Datei aus, so wie sie ist :?:

    Meinst du den Schwachsinn, den ein (zum Lesen von Text-Dateien gedachter) Editor ausspuckt, weil dieser krampfhaft versucht eine binäre Datei als Text zu interpretieren?

    Kannst du doch haben:

    AutoIt: Hier dieselbe Anzeige, wie NPP (aber nicht druckbare Zeichen als Symbole)
    Local $p = "C:\Users\BugFix\Pictures\flowers24x24.png"
    Local $fh = FileOpen($p, 16) ; $FO_BINARY (16)
    Local $read = BinaryToString(FileRead($fh))
    FileClose($fh)
    
    ; Datei enthält mit Sicherheit Chr(0)-Werte, die würden als Stringende interpretiert werden - also umwandeln
    $read = StringReplace($read, Chr(0), '[NULL]')
    
    ; Vielleicht möchtest du CR und LF auch als Zeilenumbrüche anzeigen (Edit verlangt normal CRLF):
    ; dazu alle bereits vorhandenen CR, LF, CRLF in ein Ersatzzeichen umwandeln und dann dieses mit CRLF ersetzen
    Local $tmp = '%%µµ%%'
    $read = StringReplace(StringReplace(StringReplace($read, @CRLF, $tmp), @LF, $tmp), @CR, $tmp)
    $read = StringReplace($read, $tmp, @CRLF)
    
    GUICreate('Anzeigen BinaryToString', @DesktopWidth-90, @DesktopHeight-60)
    GUISetFont(14, 400, Default, 'Courier New')
    GUICtrlCreateButton('', -10, -10, 1, 1)    ; catch focus
    GUICtrlCreateEdit($read, 10, 10, @DesktopWidth-100, @DesktopHeight-70, BitOR(0x0800,0x0040,0x0080,0x0004,0x00100000,0x00200000))
    GUICtrlSetColor(-1, 0x00D02B)
    GUICtrlSetBkColor(-1, 0x001D45)
    GUISetState()
    
    Do
    Until GUIGetMsg() = -3
    Alles anzeigen

    Wenn du bestimmte Aufgaben mit FileRead vorhast, ist primär wichtig, die Datei im entsprechenden Modus zu öffnen! Dazu sollte man einfach mal einen Blick auf die Parameterbeschreibungen der Funktion werfen.

    Deine obige Aussage zu FileRead ist definitiv falsch.

  • LimeSurvey Remote API json

    • BugFix
    • 21. Juli 2022 um 10:52
    Zitat von gmmg

    Das heißt ich Exportiere beide Dateien (einmal mit, einmal ohne Zusatzfelder) und hole mir entwerder aus der Datei ohne Zusatzfelder die 3 Ergbebnisse zu jeweiliger Zeile oder versuche die irgendwie anders zusammenzufügen.

    ohne Zusatzfeld

    "9";"2022-06-23 16:18:07";"1";"de";"1139653681";"XiL38ODU1PR1gGa";"2022-06-23 16:17:50";"2022-06-23 16:18:07";"";"5";"5";"5"

    mit Zusatzfeld

    "9";"2022-06-23 16:18:07";"1";"de";"1139653681";"XiL38ODU1PR1gGa";"2022-06-23 16:17:50";"2022-06-23 16:18:07";"";"";"";"" .........

    sind ja identisch bis (bei mit Zusatzfeld) zum Semikolon vor 'firstname', nur dass die Inhalte leer sind

    Ich würde so vorgehen:

    - bis zu diesem Semikolon ( #12, Position = StringInStr, occurence=12) in "mit Zusatzfeld" löschen

    - gesamten String "ohne Zusatzfeld" an dieser Position einfügen

  • mehrere Zeiten wenn abgelaufen für OBS

    • BugFix
    • 19. Juli 2022 um 08:28
    Zitat von WhiteHorse

    es ist ja möglich das ich zb ESC drücke und er macht die GUI zu und schließt alles.

    Das kannst du aber deaktivieren: AutoitSetOption('GUICloseOnESC', 0) ; 0 = ESC sendet kein Event zum Beenden der GUI

    Zitat von WhiteHorse

    Ist das denn auch machbar das ich ESC gedrückt halten muss sagen wir mal 3 sec um alles zu schließen

    Würde ich nicht empfehlen. Die einfachere Lösung ist die Nutzung eines an die GUI gebundenen Hotkeys (Accelerator-Key)

    AutoIt
    AutoitSetOption('GUICloseOnESC', 0)
    
    Global $hGui = GUICreate('Test')
    Global $DummyEscExit = GUICtrlCreateDummy()
    
    Global $aAccelerators[][] = [['+{ESC}', $DummyEscExit]] ; "SHIFT+ESCAPE" zum Beenden
    GUISetAccelerators($aAccelerators)
    
    GUISetState()
    
    While True
        Switch GUIGetMsg()
            Case -3, $DummyEscExit
                Exit
        EndSwitch
    WEnd
    Alles anzeigen
  • Zahlen suche im bestimmten bereich

    • BugFix
    • 18. Juli 2022 um 11:51
    Zitat von Jayjo

    die Spalten sind in einen SRP System

    Und wie kommst du zu den Werten? Copy & Paste, Export in Datei?

    Zitat von Jayjo

    ich möchte halt nicht jede Zahl in den code eingeben

    Darum brauchst du die Daten in einem Array, das du dann durchläufst.

    Übrigens solltest du dir nicht jede Info aus der Nase ziehen lassen. Wir helfen gerne, aber dazu brauchen wir natürlich alle relevanten Informationen.

    Deine nächsten Schritte:

    - aus meinem Code eine Funktion erstellen

    - deine SRP-Daten in ein Array überführen

    - Array durchlaufen

    Bei Fragen melden, aber bitte mit nachvollziehbaren Daten, also z.B. dein Skript und ein Satz Testdaten.

  • Zahlen suche im bestimmten bereich

    • BugFix
    • 18. Juli 2022 um 11:36
    Zitat von Jayjo

    Also ich habe 3 Spalten

    - in einem Array ? oder

    - in einer Textdatei / csv-Datei oder

    - bereits in ein Listview eingefügt ?

    Zitat von Jayjo

    das die Zahlen entweder in diesen Bereich liegen oder außerhalb

    Es muss jede Zahl nacheinander geprüft werden, ob sie die Bedingung (z.B. >=1 UND <= 299) erfüllt.

    Also meinen Code von oben in eine Funktion packen und nacheinander jede Zahl aus deinen Spalten an diese Funktion übergeben.

    Wenn du die Daten in einer Datei vorliegen hast, solltest du diese in ein Array einlesen und darin durch die Spalten iterieren.

  • Zahlen suche im bestimmten bereich

    • BugFix
    • 18. Juli 2022 um 11:10
    Zitat von Jayjo

    $iSearch = 1-299 eingeben also er soll halt die Zahlen scannen die im Min und Max. wert

    Du musst dich etwas genauer ausdrücken.

    - was hast du als Ausgangswert(e)

    - was soll das Ergebnis sein

    Was soll denn mit den Zahlen zwischen 1-299 passieren? Oder womit willst du diese Vergleichen? Momentan verstehe ich noch nicht, was du möchtest.

  • Zahlen suche im bestimmten bereich

    • BugFix
    • 18. Juli 2022 um 10:36

    Die einfachste Lösung:

    AutoIt
    Global $iMin = 1
    Global $iMax = 299
    
    Global $iSearch = 13
    
    If ($iSearch >= $iMin) And ($iSearch <= $iMax) Then
        ConsoleWrite('Zahl ist im Bereich' & @CRLF)
    Else
        ConsoleWrite('Zahl liegt ausserhalb des Bereichs' & @CRLF)
    EndIf

    Wenn du die Prüfung mehrfach ausführen möchtest, solltest du dieses innerhalb einer Funktion lösen, der du übergibst: Prüfwert, Minwert, Maxwert und die dir True oder False zurückgibt.

  • Automatische DriveSpace Kontrolle

    • BugFix
    • 18. Juli 2022 um 09:55
    Zitat von casi4712

    okay, dann hatte ich wohl gedacht er aktualisiert das automatisch wenn ich AdlibRegister nehme, war wohl ein Denkfehler,

    :?::?:

    Natürlich macht AdlibRegister das, das ist doch der Sinn des Registrierens einer Funktion für ein Zeitintervall.

    Ich habe das hier mal als Bsp. umgesetzt:

    AutoIt
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    
    OnAutoItExitRegister(_Exit)
    
    Global $Drive2Check = 'C:\'                 ; zu überprüfendes Laufwerk
    Global Enum $VeryGood, $Good, $Critical     ; Speicherstatus
    Global $aStatus[] = [0,60,85]               ; % für Status-Stufen (0-59, 60-84, ab 85)
    
    Global $hGui = GUICreate('Check Space [' & StringTrimRight($Drive2Check, 1) & ']', 270, 70, @DesktopWidth-280, 10)
    Global $cbOntop = GUICtrlCreateCheckbox(' GUI jetzt minimieren - Einblenden bei neuer Stufe', 10, 10, 250)
    Global $lbSpace = GUICtrlCreateLabel(' ', 10, 40, 250, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    
    _Testspace()    ; erstmaliger Aufruf zur Anzeige beim Start
    GUISetState()
    
    AdlibRegister(_Testspace, 5000)
    
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $cbOntop
                GUISetState(@SW_MINIMIZE)
            Case $GUI_EVENT_RESTORE
                GUICtrlSetState($cbOntop, $GUI_UNCHECKED)
        EndSwitch
    WEnd
    
    Func _Exit()
        Exit
    EndFunc
    
    
    Func _Testspace()
        Local Const $aColor[][2] = [[0x00FF7F,0x000088],[0xFFFF00,0x000088],[0xFF0000,0xFAFAFA]] ; Status-Color [BG,Text]
        Local $totalMB = DriveSpaceTotal($Drive2Check)
        Local $freeMB = DriveSpaceFree($Drive2Check)
        Local $Percent = Floor(($freeMB / $totalMB) * 100)
        Local Static $lastValue = 0
        Local Static $lastStatus = -1
        Local $Status
        If $lastValue = $Percent Then Return    ; keine Veränderung zur letzten Prüfung
        $lastValue = $Percent
        GUICtrlSetData($lbSpace, $Percent & '% [' & _FormatByte($freeMB*1024*1024, '', False, 2) & ' frei]')
        If $lastStatus <> $Status Then          ; Farbe nur setzen bei geändertem Status
            Select
                Case $Percent < $aStatus[$Good]
                    $Status = $VeryGood
                Case $Percent < $aStatus[$Critical]
                    $Status = $Good
                Case Else
                    $Status = $Critical
            EndSelect
            GUICtrlSetColor($lbSpace, $aColor[$Status][1])
            GUICtrlSetBkColor($lbSpace, $aColor[$Status][0])
            If BitAND(GUICtrlRead($cbOntop), $GUI_CHECKED) Then
                GUISetState(@SW_SHOW)
                GUICtrlSetState($cbOntop, $GUI_UNCHECKED)
            EndIf
            $lastStatus = $Status
        EndIf
    EndFunc
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _FormatByte
    ; Description ...: Formats a given value of bytes with highest or given unit, optional as structure with all units
    ; Parameters ....: $_iByte    The value of bytes to format
    ; ...............: $_sUnit    (Default = '', unit of highest value) or count of given unit (TB, GB, MB, KB, Byte)
    ; ...............: $_fStruct  Returns a structure with .TB .GB .MB .KB .Byte (Default = False)
    ; ...............: $_sDigit   Number of decimal digits (Default = '3') as string!
    ; Return values .: The formatted string or the structure.
    ; Author ........: BugFix
    ; ===============================================================================================================================
    Func _FormatByte($_iByte, $_sUnit='', $_fStruct=False, $_sDigit='3')
        Local Static $aByte[5][2] = [[0x10000000000],[0x40000000],[0x100000],[0x400],[0x1]]
        Local Static $tBytes = DllStructCreate('int TB;int GB;int MB;int KB;int Byte;')
        Local Static $aUnit[5] = ['TB','GB','MB','KB','Byte']
        Local $iModulo = $_iByte, $iHighest = 4
        For $i = 0 To 3
            $aByte[$i][1] = $iModulo >= $aByte[$i][0] ? Floor($iModulo/$aByte[$i][0]) : 0
            $iModulo = $aByte[$i][1] > 0 ? Mod($iModulo,$aByte[$i][0]) : $iModulo
            $iHighest = $aByte[$i][1] > 0 ? ($i < $iHighest ? $i : $iHighest) : $iHighest
        Next
        $aByte[4][1] = $iModulo
        If $_fStruct Then
            $tBytes.TB   = $aByte[0][1]
            $tBytes.GB   = $aByte[1][1]
            $tBytes.MB   = $aByte[2][1]
            $tBytes.KB   = $aByte[3][1]
            $tBytes.Byte = $aByte[4][1]
            Return $tBytes
        EndIf
        $_sUnit = StringInStr('TB GB MB KB Byte', $_sUnit) ? $_sUnit : ''
        $_sUnit = $_sUnit = '' ? $aUnit[$iHighest] : $_sUnit
        Local $iUserUnit = Floor(StringInStr('TB GB MB KB Byte', $_sUnit)/3)
        If Number($_sDigit) < 0 Then $_sDigit = '0'
        Local $sFormat = '%.' & $_sDigit & 'f %s'
        Return StringFormat($sFormat, $_iByte/$aByte[$iUserUnit][0], $aUnit[$iUserUnit])
    EndFunc  ;==>_FormatByte
    Alles anzeigen
  • mehrere Zeiten wenn abgelaufen für OBS

    • BugFix
    • 15. Juli 2022 um 12:13
    Zitat von WhiteHorse

    PS: das letzte Input feld unten wenn dort was drin steht läuft er nur noch und Stopt nicht wenn die zeit abgelaufen ist (Aufnaheme 5)

    Ja, die Abfrage in _StopTimer war nicht korrekt.

    AutoIt
    #include <GUIConstantsEx.au3>
    
    Global Const $sWinOBS = "OBS 26.1.1 (64-bit, windows) - Profil: Unbenannt - Szenen: Unbenannt"
    Global $bIdle = True    ; True = Leerlauf, keine Aufnahme läuft
    Global $TimerStart      ; wird gesetzt wenn eine Aufnahme beginnt
    Global $aRecTimes[5]    ; die eingetragenen Aufnahmezeiten in Sekunden
    Global $aCheckbox[4]    ; Array mit Checkbox-ID
    Global $iCurrRec = -1   ; Index der aktuellen Aufnahme, bei Programmstart: keiner
    Global $aGroupTitle[] = ['Stunden','Minuten','Sekunden']
    Global $aInput[5][3]
    Global $button[2]=['Start','Stop']
    
    Global $hGui = GUICreate('5 Aufnahme-Timer', 800, 700, Default, Default, 0x10C80000)
    For $i=0 To 2
        GUICtrlCreateGroup($aGroupTitle[$i], 5+70*$i, 5, 70, 40)
        For $j = 0 To 4
            If $j > 0 Then GUICtrlCreateGroup('', 5+70*$i, 5+$j*30, 70, 40)
            $aInput[$j][$i] = GUICtrlCreateInput('', 10+70*$i, 20+30*$j, 60, 20, 1)
        Next
    Next
    
    $go = GUICtrlCreateButton('Start', 550, 650, 210, 20)
    $Herunterfahren = GUICtrlCreateCheckbox("Computer herunterfahren", 600, 600, 201, 25)
    For $i = 0 To 3
        $aCheckbox[$i] = GUICtrlCreateCheckbox("Aufnahme " & $i+2 & " Aktivieren", 220, 47+$i*30, 201, 25)
    Next
    $Close = GUICtrlCreateButton("Schließen", 550, 550, 83, 25)
    $Label2 = GUICtrlCreateLabel("Programm Start mit Hotkey F7", 500, 500, 170, 24)
    GUICtrlSetFont(-1, 6, 800, 0, "MS Sans Serif")
    
    GUISetState()
    
    ; MainLoop
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $go
                If $bIdle Then
                    StartTimer()
                Else
                    StopTimer() ; zum Abbruch einer laufenden Aufnahme
                EndIf
        EndSwitch
        If Not $bIdle Then
            If _CheckTimer() Then StopTimer()
        EndIf
    WEnd
    
    Func _CalcRecordingSeconds()
        Local $inHr, $inMin, $inSec, $sumSec = 0
        For $i = 0 To 4
            $sumSec = 0
            If $i > 0 Then
                If BitAND(GUICtrlRead($aCheckbox[$i-1]), $GUI_UNCHECKED) Then ContinueLoop
            EndIf
            $inHr = GUICtrlRead($aInput[$i][0])
            $inMin = GUICtrlRead($aInput[$i][1])
            $inSec = GUICtrlRead($aInput[$i][2])
            If $inHr <> '' Then $sumSec += $inHr*60*60
            If $inMin <> '' Then $sumSec += $inMin*60
            If $inSec <> '' Then $sumSec += $inSec
            $aRecTimes[$i] = $sumSec
        Next
    EndFunc
    
    HotKeySet ("{F7}", '_ToggleStartStop')
    
    Func _ToggleStartStop()
        Return ($bIdle ? StartTimer() : StopTimer())
    EndFunc
    
    Func StartTimer()
        If $iCurrRec = -1 Then  ; erstmaliger Aufruf
            _CalcRecordingSeconds()
        EndIf
        While $iCurrRec < UBound($aRecTimes) -1
            $iCurrRec += 1
            If $aRecTimes[$iCurrRec] <> 0 Then ExitLoop ; leere Einträge überspringen
        WEnd
        If $aRecTimes[$iCurrRec] = 0 Then Return MsgBox(16, 'FEHLER', 'Keine Aufnahmezeiten eingetragen!')
        MsgBox(64, 'Aufnahme', 'Starte Aufnahme #' & $iCurrRec+1)
        GUICtrlSetData($go, 'Stop')
        $TimerStart = TimerInit()
        $bIdle = False
        ; starte Aufnahme
        ControlSend($sWinOBS, "", "", "{F8}")
    EndFunc
    
    
    Func _CheckTimer()
        Return (Floor(TimerDiff($TimerStart)/1000) >= $aRecTimes[$iCurrRec])
    EndFunc
    
    
    Func StopTimer()
        $bIdle = True
        ; beende Aufnahme
        ControlSend($sWinOBS, "", "", "{F8}")
        MsgBox(64, 'Aufnahme', 'Stoppe Aufnahme #' & $iCurrRec+1)
        GUICtrlSetData($go, 'Start')
        If $iCurrRec = UBound($aRecTimes) -1 Then  ; letzte Aufnahme beendet
            If BitAND(GUICtrlRead($Herunterfahren), $GUI_CHECKED) Then
                Return MsgBox(64, 'Herunterfahren', 'Hier [#' & @ScriptLineNumber & '] Shutdown einfügen.')
            EndIf
        EndIf
    EndFunc
    Alles anzeigen
  • Konfigurationsdatei

    • BugFix
    • 14. Juli 2022 um 10:29

    Ich verwende bei meiner Arbeit eine ASCII-Schnittstelle. Deren (sich ab und an ändernde) Definition habe ich in einer eigenen Konfigurationsdatei gespeichert.

    Der Aufbau ähnelt einer INI, aber auch einer CSV. Ich habe hier die für mich wichtigen Funktionalitäten beider Typen zusammengeführt.

    Eventuell auch für euch nützlich.

    Aufbau der Konfigurationsdatei:

    • Dateiendung - beliebig
    • Die Gliederung in Sektionen ist zwingend. Sektionsnamen sind case sensitiv: [Section] <> [section]
    • Jede Zeile enthält einen Eintrag
    • Besteht der Eintrag aus mehreren Werten, sind diese ausschliesslich mit ";" zu trennen
    • Enthält ein Wert ein ";", ist dieses zu maskieren: "\;"
    • Kommentarzeilen beginnen mit "REM " - Großschreibung zwingend!
    • Leerzeilen können beliebig eingefügt sein und werden ignoriert

    Da in die Datei keine Werte zurückgeschrieben werden (jedenfalls für mich nicht relevant), habe ich mich vorerst auf eine Funktion zum Einlesen und Weiterverarbeiten (durch Übergabe einer Verarbeitungsfunktion) beschränkt.

    AutoIt: Funktionsparameter:
    $_File          Dateipfad
    $_Section       Sektionsname
    $_aReturn       (ByRef) Variable zur Aufnahme des Ergebnisarrays
    $_Ubound2       (optional) Wenn die Zeile in Einzelwerte gesplittet werden soll, deren Anzahl.
                    Der Wert darf kleiner sein, als die Anzahl der tatsächlich vorhandenen Splitwerte.
                    Zeilen mit weniger Einzelwerten werden jedoch ignoriert.
                    (Standard: 0 - Die gesamte Zeile als ein Array-Eintrag. Maskierte Trenner werden mit Maskierung angezeigt.
    $_funcProgress  (optional) Jede Zeile wird an diese Funktion zur Weiterverarbeitung übergeben. (Standard: Null)
                    Die Funktion darf nur einen Parameter besitzen: "Zeile" ( _MyFunc($line) )
                    Soll die Zeile ignoriert werden, muss die Funktion "" zurück geben.
                    Bei $_Ubound2 = 0 --> Die Funktion muss einen String zurück geben
                    Bei $_Ubound2 > 0 --> Die Funktion muss ein 1D-Array zurück geben, [0]..[$_Ubound2 -1], KEIN Zähler an [0]!
                    Beachten:
                    Wenn der Text maskierte Trenner enthält, muss die Funktion dieses beim Splitten berücksichtigen
    Alles anzeigen

    Im Anhang findet ihr ein Beispiel mit Konfigurationsdatei.

    AutoIt: ConfigRead.au3
    ;-- TIME_STAMP   2022-07-14 10:16:45   v 0.1
    
    
    ; #FUNCTION# =======================================================================================
    ; Name ..........: _ConfigRead
    ; Description ...: Reading a configuration file, optionally filtered
    ; ...............: File rules:     • Can have any file extension
    ; ...............:                 • Requires sections, spelling case sensitive: [Section] <> [section]
    ; ...............:                 • If the entries contain values that are to be split into
    ; ...............:                   individual fields, use only ";" as the separator.
    ; ...............:                   Separators in the text must be masked: "\;"
    ; ...............:                 • Comments start with "REM " at the beginning of the line
    ; ...............:                 • Blank lines may be included and will be ignored
    ; Parameter(s)...: $_File          The file path
    ; ...............: $_Section       The section name
    ; ...............: $_aReturn       (ByRef) The variable to get the result array
    ; ....[optional].: $_Ubound2       If the lines are to be split into single values whose number is
    ; ...............:                 (Default: 0 - full line as one array item, masked separators are displayed with masking)
    ; ....[optional].: $_funcProgress  Each line is passed to this function for evaluation. (Default: Null)
    ; ...............:                 Use only one parameter in your function: "line" ( _MyFunc($line) )
    ; ...............:                 Return "" from your function if the line should be ignored.
    ; ...............:                 If $_Ubound2 = 0 --> return a string.
    ; ...............:                 If $_Ubound2 > 0 --> return a 1D-array, [0]..[$_Ubound2 -1], NO counter at [0]!
    ; ...............:                 Note:
    ; ...............:                 If your text contains masked delimiters, your function must take this into account when splitting.
    ; Return values .: Success         1
    ; ...............: Failure         0    @error = 1  Section not exists or empty
    ; Author ........: BugFix
    ; ==================================================================================================
    Func _ConfigRead($_File, $_Section, ByRef $_aReturn, $_Ubound2=0, $_funcProgress=Null)
        Local $aSection[100], $n = 0
        If $_Ubound2 > 0 Then ReDim $aSection[100][$_Ubound2]
        Local $funcRet, $line, $aLine, $bInSection = False
        Local $fh = FileOpen($_File)
        Do
            $line = FileReadLine($fh)
            If Not @error Then
                ; check if the result array has to be enlarged
                If $n > UBound($aSection) -1 Then
                    If $_Ubound2 > 0 Then
                        ReDim $aSection[UBound($aSection)+100][$_Ubound2]
                    Else
                        ReDim $aSection[UBound($aSection)+100]
                    EndIf
                EndIf
    
                ; comment line --> skip
                If StringRegExp($line, '^REM\s') Then ContinueLoop
    
                ; empty line --> skip
                If $line = '' Then ContinueLoop
    
                ; while reading target section a new section starts --> stop reading
                If $bInSection And StringRegExp($line, '^\[[^\]]+') Then
                    $bInSection = False
                    ExitLoop
                EndIf
    
                ; target section starts
                If StringRegExp($line, '^\[' & $_Section & '\]') Then
                    $bInSection = True
                    ContinueLoop
                EndIf
    
                ; while reading target section
                If $bInSection Then
                    If $_Ubound2 = 0 Then                   ; output: 1D-array (one line per item)
                        If $_funcProgress <> Null Then
                            $funcRet = $_funcProgress($line); call external funtion to evaluate the line
                            If $funcRet <> '' Then          ; func returns empty string to skip the line
                                $aSection[$n] = $funcRet
                                $n += 1
                            EndIf
                        Else
                            $aSection[$n] = $line           ; add each line to result array
                            $n += 1
                        EndIf
                    Else                                    ; output: 2D-array, 2nd dimension according to $_Ubound2
                        If $_funcProgress <> Null Then
                            $funcRet = $_funcProgress($line); call external funtion to evaluate the line
                            If $funcRet <> '' Then                                          ; func returns empty string to skip the line ...
                                If IsArray($funcRet) And UBound($funcRet) >= $_Ubound2 Then ; ... otherwise an array with ubound >= $_Ubound2 must be returned
                                    For $i = 0 To $_Ubound2 -1
                                        $aSection[$n][$i] = $funcRet[$i]
                                    Next
                                    $n += 1
                                EndIf
                            EndIf
                        Else
                            $aLine = StringRegExp($line, '(\\;[^;]+|[^;]+\\;[^;]+|[^;]+\\;|[^;]+)', 3)  ; splits the line by ";", masked delimiters ("\;") are ignored
                            If UBound($aLine) >= $_Ubound2 Then     ; line is ignored if the number of elements is less than $_Ubound2
                                For $i = 0 To $_Ubound2 -1
                                    $aSection[$n][$i] = StringReplace($aLine[$i], '\;', ';')
                                Next
                                $n += 1
                            EndIf
                        EndIf
                    EndIf
                EndIf
            Else    ; EOF reached
                ExitLoop
            EndIf
        Until $line = -1
        FileClose($fh)
        If $n = 0 Then Return SetError(1,0,0)
        If $_Ubound2 > 0 Then
            ReDim $aSection[$n][$_Ubound2]
        Else
            ReDim $aSection[$n]
        EndIf
        $_aReturn = $aSection
        Return 1
    EndFunc
    Alles anzeigen
    AutoIt: Beispiel
    ;-- TIME_STAMP   2022-07-14 10:22:06
    
    
    #include 'ConfigRead.au3'
    #include <Array.au3>
    
    Global $CFG = @ScriptDir & '\ASCII_Interface.txt'
    Global $aRes
    
    MsgBox(0, 'CFG Read', 'Lesen in 1D-Array' & @CRLF & 'Jede Zeile ein Eintrag')
    _ConfigRead($CFG, 'Firmensatz', $aRes)
    _ArrayDisplay($aRes, '1D-Array')
    
    MsgBox(0, 'CFG Read', 'Lesen in 2D-Array' & @CRLF & '4 Spalten')
    _ConfigRead($CFG, 'Kopfsatz', $aRes, 4)
    _ArrayDisplay($aRes, '2D-Array')
    
    MsgBox(0, 'CFG Read', 'Lesen in 2D-Array' & @CRLF & '4 Spalten mit Filterfunktion' & @CRLF & 'Nur nummerische Definitionen')
    _ConfigRead($CFG, 'Positionssatz', $aRes, 4, _NumDef)
    _ArrayDisplay($aRes, '2D-Array mit Filter: Nur nummerische Definitionen anzeigen')
    
    
    
    Func _NumDef($_line)
        If StringRegExp($_line, ';N\d+') Then
            Return StringSplit($_line, ';', 2)
        Else
            Return ''
        EndIf
    EndFunc
    Alles anzeigen

    Dateien

    ASCII_Interface.txt 6,51 kB – 251 Downloads ConfigRead_Example.au3 859 Byte – 235 Downloads ConfigRead.au3 5,92 kB – 211 Downloads
  • GUI mit festen Werten je nach Dateiname

    • BugFix
    • 13. Juli 2022 um 13:41

    Ich würde anders herangehen:

    - am Programmstart die Desktopgröße abfragen

    - meiner Kategorie zuordnen - im folgenden CAT

    - alle verwendeten Koordinaten und Größen für jede GUI, jedes Ctrl in einem Array hinterlegen

    für Ctrl z.B.: [[Ctrl-ID][CAT][x,y,w,h]]

    Ist am Anfang sicher ordentlich Aufwand, aber beim Erstellen von je 4 Skripten hast du den auch. 8o

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™