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

Beiträge von Andy

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Andy
    • 12. September 2014 um 18:25

    Sackzement! 8o
    Da muss man erst mal drauf kommen! Vielen Dank!
    Typisch Microsoft. "Logisch" wäre gewesen, die Captures zurückzugeben (wieso heissen die wohl so?! )
    Von allem was ich bisher von Regex gehört und gelesen habe, ist dieses Verhalten sogar falsch! Vor allem, weil man mit den Matches infolge nicht existenter Referenzierung garnichts anfangen kann.

    Da werde ich meine Regex-Funktion umbauen müssen, damit die richtigen Ergebnisse rauskommen. Auch toll, dass es zu diesem Theman unendlich viele FALSCHE Funktionen im Internetz gibt. Ich gehe mal davon aus, dass die Ersteller dieser Funktionen wieder mal falsch voneinander abgeschrieben haben :rolleyes:

    //Edit Eben noch einen feinen Spruch gefunden

    Zitat

    > The Microsoft VBScript Regular Expressions (5.5) object is funny at
    > best. It is hard to use, leads to lengthy code and really looks like
    > something a VB "programmer" made.

    ....wzbw

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Andy
    • 11. September 2014 um 22:34

    Hi,
    ich hole mir mit "For Each Treffer in M" alle Treffer aus dem Objekt, daran liegts nicht.
    Probier das selbst mal aus^^, hab mich jetzt auch ausgeloged und auf meinen Rechnern kein Excel/Word. Zuhause muss man sich nicht mit diesem Zeugs rumschlagen 8)

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Andy
    • 11. September 2014 um 22:22

    yupp, dein Code wirft genau wie meiner als Ergebnis abc789 aus.....
    Irgendwie funzt das mit der Gruppe nicht ;(

    //EDIT oder bekommst du als Ergebnis etwa 789?

  • RegEx-Pattern in VBA mit anderer "Logik"?

    • Andy
    • 11. September 2014 um 21:58

    Hi zusammen,
    für halbwegs normale Filter in Texten komme ich in AutoIt gut mit RegEx klar. Die Pattern sind "logisch".
    Simples zusammenstellen der Pattern und testen funktioniert HIERMIT sehr gut (für mich reichts ^^ )

    Kleinkram habe ich auch in VBA hinbekommen, aber heute wurde ich etwas überrascht.
    Ein Beispiel zum Nachvollziehen:

    Code
    123def
    www456
    abc789xyz
    1234


    Pattern zum matchen der Zahlenstrings mit voranstehenden Buchstaben: "\b[a-z]+(\d+)"
    \b Wortgrenze
    [a-z]+ wenigstens ein Buchstabe
    (\d+) Gruppe mit mindestens einer Ziffer

    AutoIt und der Regexer aus dem o.g. Link finden richtigerweise ( ?! ) die Ziffern 456 und 789

    VBA gibt mir bei identischem Pattern www456 und abc789 zurück, beachtet also die Gruppenklammern nicht!

    Erwartetes Ergebnis beim Pattern \b[a-z]+(\d+)[a-z]+ ist nicht etwa ein Treffer mit 789, sondern abc789xyz incl crlf !

    Wie überrede ich das VBA-Regex, die "richtigen" Treffer zurückzugeben bzw. die Gruppenklammern zu beachten?

  • Passwordeingabe in Console

    • Andy
    • 11. September 2014 um 17:21

    Hi,
    schreib doch die _cin()-Funktion der UDF so um, dass sie einen Parameter entgegennimmt welcher bestimmt, ob die Zeichen in der Console als Klartext oder als Sternchen ausgegeben werden.

  • Hilfe beim $variable [2] Syntax

    • Andy
    • 10. September 2014 um 19:39

    man man man....
    Hat IRGENDEINER in diesem Thread JEMALS ein Script debugged?
    Arrays und deren Inhalte fragt man ab mittels

    [autoit]

    _Arraydisplay()

    [/autoit]


    Keine Anzeige => kein Array, wenn Anzeige, dann sieht man den Arrayinhalt.
    Dimension eines Arrays?

    [autoit]

    Ubound()

    [/autoit]

    ist dein Freund...

    Hier wird wieder mal vortrefflich gezeigt, wie man, OHNE ein Script zu posten 2 Stunden lang Leute beschäftzigen kann, ohne auch nur ansatzweise einem Ergebnis näher zu kommen.

    SSlayer93, wenn du nicht in der Lage bist, komplette Scripte zu posten, lass die Programmiererei sein! Wenn deine Scripte so geheim sind, dass man sie niemandem zeigen darf, dann frag dich mal, was du hier willst!
    Jede Wette, ein komplettes Script wird gepostet und in den nächsten 2 Posts stehen 3 Lösungsansätze.....aber so? :thumbdown:

  • pixelsearch - Radius

    • Andy
    • 8. September 2014 um 13:15
    Zitat

    Moin, ich möchte gerne mit der Funktion: pixelsearch arbeiten.
    Dabei soll pixelsearch von der Maus aus gehen und innerhalb von 3 - 5 cm
    die Farbe suchen.

    Wo ist das Problem bzw. dein Script was nicht funktioniert?
    Oder suchst du jemanden, der dir dein Script schreibt?

  • ControlClick und der streikende Button

    • Andy
    • 8. September 2014 um 13:10

    Hi,

    Zitat

    Wäre nett, wenn mir jmd. kurz erklären könnte, wie die Zeilenformatierung für den Code hier im Forum durchgeführt werden kann

    Deinen Beitrag bitte im Reiter "Quellcode" und nicht im "Editor" bearbeiten, dann klappt das auch mit der Formatierung

  • AutoIT Aufzeichnung funktioniert nicht

    • Andy
    • 5. September 2014 um 13:31

    @alle anderen,
    eure Posts helfen beim Problem nicht weiter ;)

    leusa,
    generell ist es etwas kritisch, Scripte zur "Fernsteuerung" auf anderen Rechnern laufen zu lassen. Das hat mit der verwendeten Hard-und Software zu tun, Verarbeitungsgeschwindigkeit, Bildschirmauflösung usw....
    Um dein Problem zu lösen sind weitere Angaben erforderlich.
    Als erste Maßnahme wäre hilfreich, festzustellen WO das Script hängen bleibt.

    Zitat

    Wenn ich aber die Exe auf einem fremden PC ausführe, dann passiert nix.

    [autoit]

    Msgbox(0,0,"Start",1) ;Zeigt Fenster eine Sekunden an...
    sleep(500)

    [/autoit]

    füge das mal wie im Beispiel gezeigt zwischen jeden Ausführungsschritt ein...

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=Install_QualityCenter.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000807) ---

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

    #region --- Internal functions Au3Recorder Start ---
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
    If $aResult[1] <> '00000807' Then
    MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(00000807->' & $aResult[1] & ')')
    EndIf

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

    EndFunc

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

    Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
    EndFunc

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

    _AU3RecordSetup()
    #endregion --- Internal functions Au3Recorder End ---
    Msgbox(0,0,"Start",1) ;Zeigt Fenster eine Sekunden an...
    sleep(500) ;wartet 1/2 Sekunde
    _WinWaitActivate("Program Manager","FolderView")

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

    Msgbox(0,0,"Program Manager",1)
    sleep(500)

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

    MouseClick("left",2131,1475,1)

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

    _WinWaitActivate("Intranet - Kaiser Partner: Home - Windows Internet Explorer","Kombinationssteuerel")

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

    MouseClick("left",216,38,1)

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

    Send("https{SHIFTDOWN}.77{SHIFTUP}qualitycenter.kpg.sb3.b-source.net{ENTER}")
    _WinWaitActivate("HP ALM - Quality Center 11.00 - Windows Internet Explorer","Kombinationssteuerel")
    MouseClick("left",888,695,1)
    _WinWaitActivate("Internet Explorer - Sicherheitswarnung","Möchten Sie diese So")
    MouseClick("left",315,131,1)
    #endregion --- Au3Recorder generated code End ---

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Variablen "auslesen" und ändern

    • Andy
    • 5. September 2014 um 06:41

    Nur mal als Tip...

    Man muss nicht die Variable von Programm1 "von außen" ändern (was imho totaler bullsh**) ist, sondern einfach den Inhalt bei Programm2 "abholen" bpw. in dessen GUI.
    AutoIt wurde dafür gemacht, Daten aus anderen Anwendungen auszulesen ;)

  • OnePlus One Invite

    • Andy
    • 3. September 2014 um 20:14
    Zitat von AspirinJunkie

    ...Besitz....Eigentum...

    Ich habe mir mal ein Werkzeug ausgeliehen und es nicht zurückgegeben. Nach etlicher Zeit fragte mich mein Kumpel (er hatte es auch völlig vergessen), ob ich es noch hätte, er wolle es wiederhaben. Da habe ich nur entgegnet:" Das ist nicht mehr deins, es ist durch langanhaltenden Besitz in mein Eigentum übergegangen!"
    Er musste so lachen, dass er es mir geschenkt hatte :D
    Seitdem ist dieser Spruch bei uns ein running gag, wenn es darum geht, etwas zurückzugeben....auch wenn man etwas nur einige Stunden "ausgeliehen" hatte...

    Btw liege ich bzgl. des Geräts auch schon auf der Lauer, allerdings nicht für mich, sondern für meine Frau^^. Obwohl die das Ding sicher nichtmal zu 10% ausnutzt. Aber mit google-Navi findet man sich damit auch jwd am adw zurecht :D

  • Pixelsearch-Move?!

    • Andy
    • 31. August 2014 um 11:50

    Hi,

    Zitat

    Ist es möglich, per Pixelsearch zu erkennen, ob sich mein festgelegter Farbwert bewegt?

    Ja

    Zitat

    Also wenn sich z.B der Wert 0xFFFAA5 nach links bewegt, soll sich der
    Mauszeiger per Mousemove in die obere ecke des Bildschirms bewegen. Ist
    sowas möglich?

    Ja

    //EDIT Die Fragen sind alle beantwortet, der Thread kann geschlossen werden.

  • Eingabe Dateiname prüfen

    • Andy
    • 31. August 2014 um 10:38
    Spoiler anzeigen
    [autoit]

    $erlaubte_zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_- 1234567890" & "ÄÖÜäöüß"

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

    $teststring = "Blablub12345"
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $teststring = "Blablub12345"
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $teststring = -44
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Func String_enthaelt_erlaubte_Zeichen($string, $erlaubt = "1234567890") ;return 1, wenn alle Zeichen im String erlaubt sind
    If $string = "" Or $erlaubt = "" Then Return 0
    For $i = 1 To StringLen($erlaubt)
    $string = StringReplace($string, StringMid($erlaubt, $i, 1), "") ;alle erlaubten Zeichen aus dem String löschen
    Next
    If $string = "" Then Return 1
    Return 0 ;$string enthält nur erlaubte Zeichen
    EndFunc ;==>String_enthaelt_erlaubte_Zeichen

    [/autoit]

    macht das RegEx-Pattern dank Oskars Idee komplett überflüssig :D

  • _StringBetween @error - Stack Overflow - Funktion in Funktion

    • Andy
    • 31. August 2014 um 10:28
    Zitat von AspirinJunkie

    ist der zweite Vorteil, dass man in 80% der Fälle beim Kürzen des Quellcodes selbst auf die Lösung stößt.

    OMG, sag mal, weisst du eigentlich wieviel Zeit das kostet, ein lauffähiges Script zu erstellen, welches den eigenen Fehler reproduziert? Unverschämtheit, so etwas zu verlangen, während man doch irgendwelche Codefetzen oder 5000 Zeilen zusammenkopierten Quellcode posten kann und dann gemütlich einen Kaffee trinkt, während andere sich mit der Sch**** beschäftigen, die man selbst verzapft hat!
    Wahrscheinlich verlangst du als nächstes noch, dass man sich Methoden zum Debugging aneignet, um Fehler im Script selbst zu finden! Blasphemie!
    Wozu gibts denn sonst Foren mit Leuten die nur darauf warten irgendwelchen programmiertechnischen Müll vorgeworfen zu bekommen und diesen dann genau so hinzubiegen, wie man es gerne möchte? Wohlgemerkt nachdem man diesen Leuten nach dem x-ten Mal Nachfragen dann erklären muss, dass man es eigendlich ganz anders gemeint hatte....

  • _StringBetween @error - Stack Overflow - Funktion in Funktion

    • Andy
    • 31. August 2014 um 09:50
    Zitat

    Die Variable $sTest, welche an den rekursiven Aufruf übergeben wird könnte zuvor geändert worden sein und muss nicht mehr den ursprünglichen Inhalt haben. Somit muss der rekursive Aufruf nicht zwangsläufig ebenfalls zum Fehler führen.

    Der Sinn an einer rekursiven Funktion ist, im Fehlerfall reproduzierbar zum Abbruch zu kommen, da ansonsten der Stack überläuft, s. Script des TE.
    Ansonsten verwendet man die iterative Variante.
    Wenn man nicht rekursiv programmieren kann, sollte man es im Zweifelsfall lassen!

    //EDIT um zum Punkt zu kommen, wie willst du denn bei _StringBetween() innerhalb der Rekursion NICHT zum Fehler kommen um _Bla ohne Fehler verlassen zu können? Du müßtest den Fehlercode an _Bla() übergeben, dort bearbeiten und sicherstellen, daß _StringBetween() definitiv in ALLEN weiteren Aufrufen irgendwann KEINEN Fehler mehr erzeugt. Das geht im Sinne der Rekursion natürlich nur dann, wenn dieser Fall bereits in der Funktion _Bla() implementiert ist (was er nicht ist..) .
    Im Fehlerfall immer tiefer in eine Rekursion zu springen ohne sicherzustellen, dass dieser Fehler nicht mehr auftritt führt imho zu nicht reproduzierbaren Ergebnissen, s. Thread!

  • _DateImage

    • Andy
    • 31. August 2014 um 08:38
    Zitat

    Ab und an einen Blick in die UDF's werfen hilft ungemein

    Stimmt, dann fällt einem auch auf, dass Oscars schönes Script erst mit der (einer ? ) AutoIt-Version NACH 3.3.10.2 läuft, da

    [autoit]

    _DateToMonth

    [/autoit]

    geändert wurde...
    Beim klick auf die Funktion erkennt man, die deutsche Hilfe hängt immer weiter hinterher :D
    HIER ist die aktuelle Beschreibung

  • _StringBetween @error - Stack Overflow - Funktion in Funktion

    • Andy
    • 31. August 2014 um 08:28

    WENN ich Funktionen rekursiv bearbeite, dann immer so, dass im Fehlerfall aus der Rekursion herausgesprungen wird. Alles andere macht absolut keinen Sinn!

    [autoit]

    Func _Bla($sTest)
    [...]
    $sBetween = _StringBetween($sString, "abc'", "efg'")
    If @error Then
    _Bla($sTest)

    [/autoit]

    führt dazu, dass im Fehlerfall der Fehler immer wieder produziert wird, so lange, bis die maximale Rekursionstiefe erreicht wird!

  • Eingabe Dateiname prüfen

    • Andy
    • 31. August 2014 um 08:13

    Hi,
    obwohl RegEx sich für solche "Kleinigkeiten" natürlich sehr gut eignet, kann man das Problem natürlich auch mit den einfachen Stringfunktionen lösen.

    Spoiler anzeigen
    [autoit]

    $erlaubte_zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_- 1234567890" & "ÄÖÜäöüß"

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

    $teststring = "Blablub12345"
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $teststring = "Blablub12345"
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $teststring = -44
    $test = String_enthaelt_erlaubte_Zeichen($teststring, $erlaubte_zeichen)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $test = ' & $test & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Func String_enthaelt_erlaubte_Zeichen($string, $erlaubt = "1234567890") ;return 1, wenn alle Zeichen im String erlaubt sind
    If $string = "" or $erlaubt="" Then Return 0
    For $i = 1 To StringLen($string)
    If StringInStr($erlaubt, StringMid($string, $i, 1), 1) = 0 Then Return 0 ;nicht erlaubtes Zeichen gefunden
    Next
    Return 1 ;$string enthält nur erlaubte Zeichen
    EndFunc ;==>String_enthaelt_erlaubte_Zeichen

    [/autoit]


    Das hat für mich den Vorteil, die Funktion debuggen zu können, was bei RegExen nicht möglich ist. Dort muss man auf seine Fähigkeiten vertrauen und HOFFEN, dass man das Pattern für alle Fälle richtig erstellt hat.
    Die einschlägigen Internetforen sind voll von Anfragen, wieso das Pattern NICHT alle oder (viel schlimmer) falsche Treffer liefert. Somit ist man darauf angewiesen, auf die Fähigkeiten von anderen ( ! ) zu vertrauen. Ob das jemanden weiterbringt, der für seine Arbeit verantwortlich gemacht wird, sei man dahingestellt...

    Zitat

    so langsam lichtet sich das Dunkel von regulären Ausdrücken. Es scheint bereits ne Kerze im Nebel

    Bei mir scheint diese Kerze seit Jahrzehnten...bringt nur nix, wenn man für relativ einfache Aufgaben vorher stundenlang den Nebel wegwedeln muss. Und dazu noch mit dem Hintergrund, dass es auf unterschiedlichen Systemen/Programmiersprachen mit identischem Pattern völlig verschiedene Ergebnisse geben kann.

  • DirectSound UDF

    • Andy
    • 30. August 2014 um 11:33

    SimpleSynth ist ja klasse!!! :thumbup:
    Leider bin ich musikalisch keine große Leuchte, aber allein das rumspielen macht Spaß. Damit bekomme sogar ich eine psychedelische Version von "Alle meine Entchen" hin 8o


    Beim Schließen des "View"-Fensters beendet sich die Anwendung.

  • Grundlegende Frage zu TCP

    • Andy
    • 29. August 2014 um 16:38
    Zitat

    Clients können von anderen Netzwerken draufzugreifen sofern du auf deine LAN-IP hostest (192....) und eine globale IP hast (Internetzugriff).

    Lan-IP hosten.....und alle 24h updaten? :rofl:
    DynDNS und Konsorten ist dein Freund ;)

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™