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

  • RegExp - ArrayPattern

    • BugFix
    • 21. Mai 2009 um 19:43

    Hi,
    ich möchte meine automatisierte Variablendeklaration ausbauen und auch auf die Möglichkeit von Variablen inerhalb einer Arraydeklaration reagieren.
    Mögliche Strings z.B.:
    Local $IrgendwasVor, $Array[3] = ["{UP}",$bla_1 , $_blub]
    Local $IrgendwasVor, $AccelKeys[5][2] = [["{UP}", $1Up], ["{DOWN}", $1Down], ['{TAB}', $1Tab], ['+{TAB}', $1STab], ['{Enter}', $1Enter]], $IrgendwasNach

    Da in den Strings einfache und doppelte Anführungszeichen vorkommen können und zum Test der String in Anführungszeichen eingefaßt wird, habe ich die inneren " durch Chr(0x22) ersetzt.

    Mein Ziel ist, die enthaltenen Variablen zu selektieren (blau markiert).
    Mit nachfolgendem Skript klappt das auch. Ich würde jedoch gern in einem Schritt die Variablen ausgeben.
    Also, vielleicht hat ja jemand eine Idee, wie man das Pattern verbessern könnte. Die Vermeidung von Backreferenzen (?:) ist übrigens beabsichtigt.

    [autoit]

    Local $pattern = "(?:\$[\d\w]+\[\d+\](?:\[\d+\])?\s*=\s*)" & _
    "(\[(?:(?:\s*(?:\x22|')[^\x22']+(?:\x22|')\s*?,?)*|(?:\s*(?:\$[\d\w]+)\s*),?)*\]|" & _
    "\[(?:\[(?:(?:\s*(?:\x22|')[^\x22']+(?:\x22|')\s*?,?)*|\s*\$[\d\w]+\s*,?)*\][\s,]*)*\])"

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

    Local $test1D = "Local $IrgendwasVor, $Array[3] = [" & Chr(0x22) & "{UP}" & Chr(0x22) & ",$bla_1 , $_blub]"

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

    Local $test2D = "Local $IrgendwasVor, $AccelKeys[5][2] = [[" & Chr(0x22) & "{UP}" & Chr(0x22) & _
    ", $1Up], [" & Chr(0x22) & "{DOWN}" & Chr(0x22) & ", $1Down], ['{TAB}', $1Tab]" & _
    ", ['+{TAB}', $1STab], ['{Enter}', $1Enter]], $IrgendwasNach"

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

    ; check ob Array-Deklaration enthalten
    Local $ret = StringRegExp($test1D, $pattern, 1), $sOut = ''

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

    ; wenn ja, im Array enthaltene Variablen selektieren
    If IsArray($ret) Then
    ConsoleWrite($ret[0] & @CRLF) ; Arrayinhalt ausgeben
    $ret = StringRegExp($ret[0], '\$[\d\w]+', 3)
    If IsArray($ret) Then
    For $i = 0 To UBound($ret) -1
    $sOut &= $ret[$i] & ', '
    Next
    ConsoleWrite(StringTrimRight($sOut, 2) & @CRLF & @CRLF)
    EndIf
    EndIf

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

    Local $ret = StringRegExp($test2D, $pattern, 1)

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

    ; wenn ja, im Array enthaltene Variablen selektieren
    If IsArray($ret) Then
    $sOut = ''
    ConsoleWrite($ret[0] & @CRLF) ; Arrayinhalt ausgeben
    $ret = StringRegExp($ret[0], '\$[\d\w]+', 3)
    If IsArray($ret) Then
    For $i = 0 To UBound($ret) -1
    $sOut &= $ret[$i] & ', '
    Next
    ConsoleWrite(StringTrimRight($sOut, 2) & @CRLF)
    EndIf
    EndIf

    [/autoit]
  • IE in GUI einbauen -> Cookie löschen

    • BugFix
    • 21. Mai 2009 um 17:59

    Der Ordner ist schreibgechützt und versteckt. Das mußt du beachten.

  • IE in GUI einbauen -> Cookie löschen

    • BugFix
    • 21. Mai 2009 um 17:15

    Speicherort der Cookis (sofern vom User nicht geändert): ..\Dokumente und Einstellungen\USER\Lokale Einstellungen\Temporary Internet Files

  • Fenster unter dem Mauscursor ermitteln

    • BugFix
    • 21. Mai 2009 um 16:52

    Dann so:

    [autoit]

    Local $tagPOINTAPI = DllStructCreate('long x;long y')
    DllCall('user32.dll', 'long', 'GetCursorPos', 'ptr', DllStructGetPtr($tagPOINTAPI))
    Local $xPoint = DllStructGetData($tagPOINTAPI, 'x')
    Local $yPoint = DllStructGetData($tagPOINTAPI, 'y')
    Local $hWnd_under_Mouse = WindowFromPoint($xPoint, $yPoint)
    If $hWnd_under_Mouse Then MsgBox(0, '', 'Handle = ' & $hWnd_under_Mouse)

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

    Func WindowFromPoint($xPoint, $yPoint)
    Local $ret = DllCall("user32", 'long', 'WindowFromPoint', 'long', $xPoint, 'long', $yPoint)
    If Not @error Then
    Return $ret[0]
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]
  • Steuern eines sliders

    • BugFix
    • 21. Mai 2009 um 16:10

    So was in der Art hatte ich mal gemacht: eigene Lautstärkeregelung einblendbar

  • Fenster unter dem Mauscursor ermitteln

    • BugFix
    • 21. Mai 2009 um 15:58

    Probier mal:

    [autoit]

    Func GetForegroundWindow()
    Local $ret = DllCall("user32.dll", "long", "GetForegroundWindow")
    If Not @error Then
    Return $ret[0]
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]
    Zitat

    The GetForegroundWindow function returns the handle of the foreground window (the window with which the user is currently working). The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.

  • EuroEditor 3.1.0 Beta-Version

    • BugFix
    • 20. Mai 2009 um 23:06

    @ mazo09
    Was soll diese Kinderkacke hier?! X(
    Du gibst ein freies Installationstool als dein eigenes Werk aus und versuchst dann noch User, die den Link auf das Tool veröffentlichen, zu Nötigen. Das ist allerunterste Schublade und wenig vereinbar mit dem Geist, der in unserem Forum herrschen soll.
    Ich fordere dich hiermit öffentlich auf, dazu Stellung zu nehmen.

  • Allgemeine anfrage BMC Remedy

    • BugFix
    • 19. Mai 2009 um 20:51

    Ich würde sogar sagen, niemand weiß, was das ist.
    Wenn du googelst findest du Einträge zu Voicerecorder, Computerspiele, HeavyMetal-Band...

  • StringRegExp

    • BugFix
    • 19. Mai 2009 um 15:44
    [autoit]

    #include <file.au3>
    Local $aFile, $file = @ScriptDir & '\test_x.txt' ; deine members.txt
    _FileReadToArray($file, $aFile)
    For $i = 1 To UBound($aFile) -1
    ;~ ConsoleWrite(StringRegExpReplace($aFile[$i], '(CN=)([a-zA-ZäöüÄÖÜß0-9_\-.]+)(\\,\s*)([a-zA-ZäöüÄÖÜß0-9_\-.]+)(.*)', '$2, $4') & @CRLF)
    GUICtrlCreateListViewItem(StringRegExpReplace($aFile[$i], '(CN=)([a-zA-ZäöüÄÖÜß0-9_\-.]+)(\\,\s*)([a-zA-ZäöüÄÖÜß0-9_\-.]+)(.*)', '$2, $4'), $hListView)
    Next

    [/autoit]
  • StringRegExp

    • BugFix
    • 19. Mai 2009 um 15:35
    Zitat von subzero007

    habe ich jetzt nicht genau verstanden ?


    Du möchtest bitte mehrere Zeilen aus deiner members.txt posten, sonst kann das Pattern nicht angepaßt werden.

  • StringRegExp

    • BugFix
    • 19. Mai 2009 um 13:58
    Zitat von Xenobiologist

    dass Sonderzeichen im Namen öäü bei \w nicht rekannt werden.


    Stimmt, gibt ja die tollsten Usernamen :D
    Dann also "\w+" ersetzen durch "[a-zA-ZäöüÄÖÜß0-9_\-.]+" - dann findest auch den User: Häß-ling_0.5 :rofl:

  • Switch Problem, bräcuhte hifle

    • BugFix
    • 19. Mai 2009 um 13:38

    Kommt davon, wenn man den Code nicht sauber einrückt. ;)
    Dir fehlt ein EndIf!

  • StringRegExp

    • BugFix
    • 19. Mai 2009 um 12:32
    [autoit]

    $text = "CN=nachname\, vorname (xx,OU=xx"
    $aUser = StringRegExp($text, '(?:CN=)(\w+)(?:\\,\s*)(\w+)', 1)
    MsgBox(0, '', 'Vorname = ' & $aUser[1] & @LF & 'Nachname = ' & $aUser[0])

    [/autoit]

    Edit:
    Oder ohne Array

    [autoit]

    $text = "CN=nachname\, vorname (xx,OU=xx"
    MsgBox(0, '', 'Nachname,Vorname = ' & StringRegExpReplace($text, '(CN=)(\w+)(\\)(,)(\s*)(\w+)(.*)', '$2$4$6'))

    [/autoit]
  • Sonderzeichen mit Inbox einlesen und Ausgeben

    • BugFix
    • 19. Mai 2009 um 11:35
    Zitat von ctec

    Müsstest also den String nach Sonderzeichen durchsuchen und dann entsprechend ersetzen.


    Und das kannst du ganz komfortabel mit einem RegEx machen:

    [autoit]

    Local $input = InputBox('Test', 'Sonderzeichen')
    $input = StringRegExpReplace($input, '[#!^+{}]', '{' & '$0' & '}')
    MsgBox(0, 'String für "Send()"', $input)

    [/autoit]
  • Problem mit _WordDocPrint - Soll nicht aufs drucken warten

    • BugFix
    • 19. Mai 2009 um 09:29

    In der Commandline Variante gibt es eigentlich nur zwei Fehlerquellen:
    - Regitryänderung wird nicht übernommen (am Besten Rückgabe von Regwrite auswerten) oder
    - fehlerhafte Angabe in RunWait:
    RunWait(@ComSpec & " /c " & 'C:\Programme\PDFCreator\PDFCreator.exe /NOSTART /PF"' & $SourceFolder & $aFiles[$i] & '"', "", @SW_HIDE)
    Next
    ==> hinter /PF darf kein Leerzeichen stehen!
    ==> Parameter Dateipfad in eigenen Gänsfüßchen:
    '..\PDFCreator.exe /NOSTART /PF"Dateipfad"'

  • Verschiedene Meldungen

    • BugFix
    • 18. Mai 2009 um 17:29

    Ja klar.
    Du mußt nur entsprechend eine Variable switchen, z.B. so:

    [autoit]

    Global $Status = 0
    ;...
    $button = GuiCtrlCreateButton(..)
    ;..
    While 1
    If GuiGetMsg() = $button Then _status()
    ;...
    WEnd

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

    Func _status()
    $Status = Not $Status ; wenn $Status=0 wird er 1, bzw. umgekehrt
    ; Auswerten Statuswert
    EndFunc

    [/autoit]
  • 2 Bilder fusionieren

    • BugFix
    • 18. Mai 2009 um 17:04

    Sry, aber du weißt nicht was du willst.
    Eben gerade bestätigst du auf Nachfrage, dass es Dateien sind - und jetzt doch wieder GUI ? ?(

  • mehrere GUIs

    • BugFix
    • 18. Mai 2009 um 17:00
    Guckst du
    [autoit]

    #include <GUIConstants.au3>

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

    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)

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

    $gui2 = GUICreate('GUI 2')
    $btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; Window Handle
    Case $gui1
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    EndSwitch
    Case $gui2
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $btn2
    MsgBox(0, '', 'Button 2 geklickt')
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • 2 Bilder fusionieren

    • BugFix
    • 18. Mai 2009 um 16:58

    Dann such erst mal nach einer Methode, die Farbwerte für jedes Pixel der beiden Bilder zu ermitteln.
    Nun die beiden Werte (von jedem Pixel) subtrahieren und zurückschreiben /-zeichnen, wie auch immer.
    Viel Spaß! :D

  • regexp oder

    • BugFix
    • 18. Mai 2009 um 16:38
    Zitat von diepfeile

    gibt es ein entweder-oder in regexp?! das könnte vllt die lösung sein

    Ja freilich 8o

    [autoit]

    #include <Array.au3>
    $pattern = '(?:\s+)(\w+)(?:(?:\s+wert:)|\s+)(\d+|n/a)(?:\s*)(\d+m)(?:\s*)(\d+s)'
    $var1 = " gustav n/a 34765m 56s" ; fall1
    $var2 = " gustav wert:1234 15m 7s" ; fall2

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

    $data = StringRegExp($var1, $pattern, 1)
    _ArrayDisplay($data, 'Fall 1')
    $data = StringRegExp($var2, $pattern, 1)
    _ArrayDisplay($data, 'Fall 2')

    [/autoit]

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™