Beiträge von SEuBo

    Hallo meine Lieben,


    auch mir sei bitte die Leichenschändung verziehen.


    Aus aktuellem Anlass würde ich dieses Script und die Figuren gerne wiederverwenden.

    Leider sind alle Links und Downloadmöglichkeiten verschwunden.


    Hat ein fleißiges Forenmitglied die Dateien eventuell noch irgendwo gehortet? :)


    Danke und VG,

    Studenten sind faul :P



    Keine Garantie auf Lauffähigkeit, ist auf meinem Tablet entstanden :D

    Stichwort ist die WinHTTP.au3
    Hier ein Beispiel, schnell im Wordpad & ohne Live Http Headers getippt, keine Garantie auf vollständig- oder richtigkeit.


    #include <WinHttp.au3>
    Local $hSession, $hConnect, $sUser, $sPass


    $sUser = 'test'
    $sPass = 'test'


    $hSession = _WinHttpOpen()
    $hConnect = _WinHttpConnect($hSession, 'demos.9lessons.info')


    ; HTTP Get
    $SHTML = _WinHttpSimpleRequest($hConnect, 'GET', '/login.php')


    ; HTTP Post
    $SHTML = _WinHttpSimpleRequest($hConnect, 'POST', '/welcome.php', Default, 'username=' & $sUser & '&password=' & $sPass, 'http://demos.9lessons.info/login.php')


    ; Quelltext in SciTE Console ausgeben
    ConsoleWrite($SHTML & @CRLF)

    Das "*" bedeutet, dass diese "Dreierwiederholung" beliebig oft wiederholt wird.


    Nope.
    Das wäre in folgendem Regex der Fall:


    Code
    1. ([AUG]{3})*


    Hier würden beliebig viele Blöcke (jeweils 3 Zeichen, beliebige Kombination von A's, U's und/oder G's) gefunden.
    z.B.: AUGAUG, AUGGUAAAG, UUUUUU


    Ganz nebenbei: Im Ergebnis-Array erhält man aber bei den grade gebrachten Beispielen aber nur AUG, AAG und UUU zurück - jeweils den letzten 3er-Block. Die anderen Ergebnisse werden einfach gesagt 'überschrieben'. Der oben gepostete Regex muss hier nochmal von runden Klammern umschlossen werden um das ganze Ergebnis zu erhalten! -> (([AUG]{3})*)




    Zurück zum Thema:
    Ich bin auch der Meinung, dass dein zuletzt gepostetes Pattern so nicht funktionieren sollte. Die Kombination {3}*? ist schon sehr gewöhnungsbedürftig.
    Dein Beispiel ist perfekt, um es mit einer sog. Assertion zu verwenden. Probier mal folgendes (Ungetestet, hab keinen Regexbuddy hier!)


    Code
    1. (AUG(?=UAA|UAG|UGA)[AUG]{3}(?:UAA|UAG|UGA))


    While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Checkbox_Progr_102b_install
    If GUICtrlRead($Checkbox_Progr_102b_install) = $GUI_CHECKED Then
    GUICtrlSetState($Status_Reg_Key_32bit_import, $GUI_ENABLE)
    GUICtrlSetState($Status_Reg_Key_32bit_import, $GUI_CHECKED)
    Else
    GUICtrlSetState($Status_Reg_Key_32bit_import, $GUI_DISABLE)
    GUICtrlSetState($Status_Reg_Key_32bit_import, $GUI_UNCHECKED)
    EndIf
    EndSwitch

    Gefunden werden sollen alle Parameter einer Funktion (auch wenn diese Parameter wieder Funktionen oder Verknüpfungen enthalten).


    Rekursion? Vergiss es.


    Dein Teststring würde jedenfalls mit z.B. so einem pattern funktionieren
    Global $sPattern = _
    '(?x)' & _
    '(?<=\()(?:' & _
    ' [^\(,]+\([^\(,]*(?=\)|\,)|' & _
    ' [^\(,]+ (?=\)|\,)' & _
    ')' & _
    '|' & _
    '(?<=\,)(?:' & _
    ' [^\(,]+\([^\(]*(?=\)|\,)|' & _
    ' [^\(,]+ (?=\)|\,)' & _
    ')'


    Global $sSTR = 'MyFunc($Param1, $Param2, Hex(255, 2), AnotherFunc(1, 2, 3, 4))'
    Global $aSPLIT = StringRegExp($sSTR, $sPattern, 3)
    For $i = 0 To UBound($aSPLIT) - 1 Step 1
    ConsoleWrite(StringStripWS($aSPLIT[$i],3) & @CRLF)
    Next

    Ist glaube ich auch nicht so die elegante Lösung.


    Geht so. Eigentlich schon. Diese "Wrapper"-Funktionen sind gar nicht so unüblich. Und wenn es ganz hübsch sein soll, kannst du ja eine OnEvent-Handler-Funktion nach diesem Prinzip schreiben: Alle Controls werden via GUICtrlSetOnEvent mit einer Funktion (z.B. "_Handler()") verknüpft. In dieser Funktion selbst steckt eine Switch/Case-Anweisung, mit welcher du @GUI_CtrlId abfragst und mit deinen Control-ID's abgleichst. Je nachdem von welchen Control das Event kam, rufst du die entsprechende Funktion dazu auf - oder übergibst die entsprechenden Parameter. So weit klar?


    Funktioniert ja super.


    Problematisch wird es hier, wenn die erste GUI auch noch reagieren soll, solange die zweite offen ist. Ich würde das Coding eventuell so gestalten (Alle GUI-Fenster zu Anfang erstellen, und zu geeigneter Zeit ein- bzw. ausblenden):


    Gibt es eigentlich auch die Möglichkeit statt einem Child-CUI in einem neuen Fenster zu öffnen,


    #include <WinAPI.au3>
    ;...
    _WinAPI_SetParent($childwin1, $mainwindow)

    Die Zugriffe erfolgen ausschließlich über die Funktion, somit wäre es sinnvoll das Array als Local Static zu erstellen. Allerdings hast du dann keine dynamische Größenveränderung des "Mutter-Arrays" mehr, da statisch erstellte Arrays in der Dimension nicht verändert werden können. Aber die Anzahl Container auf vorab 128 (oder ähnlich) festzulegen sollte eigentlich ausreichen. Die enthaltenen Element-Array sind ja weiterhin dynamisch.



    Func _foobar()
    Local Static $foo[1]
    Local $bar

    $bar = $foo


    ; zeugs ...


    ReDim $bar[ .. ]
    $foo = $bar
    EndFunc

    Frei ausm Bauch, glaube auch nicht, dass das auf Anhieb funktioniert:
    $IE = _IECreate()
    ; ...
    $IE.document.charset = 'ISO-8859-1' ; Alternativ mal ISO-8859-15 probieren
    ; ...
    _IENavigate($IE, "https://search.mysharepoint.com/Seiten/results.aspx?k=" & $Suchbegriff")

    Zitat


    $iPID = Run("notepad.exe", "", @SW_MINIMIZE)
    WinWait("[class:Notepad]")


    Schonmal probiert, was passiert, wenn du schon ein Notepad offen hast? Ich halte das für sehr fehleranfällig.
    Würde da eher eine Schleife um das _WinGetByPID() machen.

    Das Erste, was ich bemerkt habe: StringRegExpReplace() ist ca. 6x schneller als StringReplace()


    Hier hab ich jetzt aufgehört, weiterzulesen. Verzeiht also, wenn das dann doch schon gepostet wurde.


    Schalte mal bei StringReplace das Case-Sensitivity-Flag auf 1! Dann siehst du mal, wieviel schneller StringRegExpReplace dann noch sein sollte

    ACHTUNG, CROSSPOST!
    Ich werde in das entsprechende Forum nicht direkt verlinken. Wer die Domain des bösen Bruder's kennt, der füge ihr folgendes hinzu:

    Code
    1. /board108-anderes/board109-hilfe-support-anderes/10579-hilfe-bei-regexp-ben%C3%B6tigt/





    Hallo Leute,


    ich habe im Moment einen Gedankenhänger - es wäre genial, wenn ihr da weiterhelfen könntet.
    Copy n Paste Lösungen sind gern gesehen, habe schon viel zu viel Zeit dafür verschwendet *gg*


    Ich benötige einen Regexp für folgenden Fall:
    Geparsed wird ABAP-Quellcode. Gesucht werden SELECT-Anweisungen, bei denen in der WHERE (oder in der JOIN-Bedingung, oder in beidem) nur 2 der folgenden 3 Felder versorgt werden:
    "vtweg", "spart" und "vkorg".


    Hier ein Teststring, mit dem das ganze wahrscheinlich leichter nachzuvollziehen ist.


    Vllt noch hilfreiche Infos: Es können sonst auch beliebige Felder abgefragt / versorgt werden. Die Felder müssen nicht direkt aufeinander folgen. Die Reihenfolge der Felder ist beliebig.
    ABAP Anweisungen werden außerdem mit einem Punkt abgeschlossen (Ähnlich wie in z.B. PHP mit einem Semikolon)


    Bin um jede Hilfe dankbar!


    Gruß Seubo

    Alternativ kannst du auch ein Dummy-Control mit dem Befehl GUICtrlCreateDummy() erstellen. Dieses kannst du dann per GUICtrlSendToDummy() ansteuern - daraufhin kannst du mit GUIGetMsg() auf den Dummy reagieren.



    LG