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

Beiträge von alpines

  • Oberfläche ablesen

    • alpines
    • 9. Februar 2018 um 16:54

    Hast du das Finder-Tool auf das Textfeld gehalten oder nur auf das Fenster?

    Wenn du auf das Textfeld hältst könntest du genauere Daten zum Identifizieren bekommen und den Text mit ControlGetText direkt auslesen.

  • Oberfläche ablesen

    • alpines
    • 9. Februar 2018 um 12:44

    Du musst uns dann auch die Summary mal posten, wir wissen nicht wo der Wert genau auftaucht.

    Wird er angezeigt wenn du auf das Control hältst oder nur auf das Fenster...

  • Text in iFrame schreiben

    • alpines
    • 8. Februar 2018 um 20:45

    Ich hab dir mal ne PN geschrieben (u.a. wegen anderen Sachen).

    Wegen der Giftcard (so stehts auch in der PN):

    Du kannst mir gerne einen 10er Steamguthaben mitbringen oder an das Forum spenden per PayPal, oder keins von beiden.

    Immerhin helfen wir hier ehrenamtlich und wenn du nach dem Thread schlauer bist, sind wir auch zufrieden :)

  • Text in iFrame schreiben

    • alpines
    • 8. Februar 2018 um 18:43
    Zitat von AlphavibeZ

    Kann ich mich irgendwie für deine Hilfe erkenntlich zeigen?

    Was schwebt dir denn vor?

  • Text in iFrame schreiben

    • alpines
    • 8. Februar 2018 um 17:59

    Der Grund warum dein Skript keine Fehler schmeißt und du deine fehlerhafte Logik direkt sehen würdest ist, dass du alle Variablen vorher deklarierst.

    Das ist ja auch in Ordnung aber dann musst du schärfer hingucken.

    Du versuchst deine GUIs so anzuzeigen, und das ist falsch.

    Du darfst GUI-Defintionen gerne in Funktionen schieben, das ist kein Problem aber dann sollte die Funktion nicht-blockierend sein, da ansonsten in der Funktion auf GUI-Nachrichte gewartet wird.

    Sind deine anderen GUIs noch nicht initialisiert bringt dir ein GUISetState auch nichts.

    AutoIt
    Global $hG1, $hG2, $hButton
    
    G1()
    G2()
    
    Func G1()
        $hG1 = GUICreate("GUI1")
        $hButton = GUICtrlCreateButton("Zeige GUI2", 20, 20)
    
        GUISetState(@SW_SHOW, $hG1)
    
        While Sleep(10)
            Switch GUIGetMsg()
                Case -3
                    Exit 0
    
                Case $hButton
                    GUISetState($hG2, @SW_SHOW)
            EndSwitch
        WEnd
    EndFunc
    
    Func G2()
        $hG2 = GUICreate("GUI2")
        GUISetState(@SW_HIDE, $hG2)
    
        While GUIGetMsg() <> -3
        WEnd
    EndFunc
    Alles anzeigen

    Der richtige Weg ist es die GUIs zu erzeugen, sie zu verstecken ohne Eingaben zu verwerten und dann erst sie anzuzeigen bzw. zu verstecken:

    AutoIt
    Global $hG1, $hG2, $hButton, $hButton2
    
    ;Initalisiere GUIs, blockiere nicht
    G1()
    G2()
    
    GUISetState(@SW_SHOW, $hG1)
    
    While Sleep(10)
        Switch GUIGetMsg()
            Case -3
                Exit
    
            Case $hButton
                MsgBox(64, "Button", "Es wurde $hButton auf der GUI1 gedrückt." & @CRLF & "GUI1 wird nun versteckt und GUI2 wird angezeigt.")
                GUISetState(@SW_HIDE, $hG1)
                GUISetState(@SW_SHOW, $hG2)
    
            Case $hButton2
                MsgBox(64, "Button", "Es wurde $hButton2 auf der GUI2 gedrückt." & @CRLF & "GUI2 wird nun versteckt und GUI2 wird angezeigt.")
                GUISetState(@SW_HIDE, $hG2)
                GUISetState(@SW_SHOW, $hG1)
        EndSwitch
    WEnd
    
    Func G1()
        $hG1 = GUICreate("GUI1")
        $hButton = GUICtrlCreateButton("Zeige GUI2", 20, 20)
        ;Keine Msg-Schleife
    EndFunc
    
    Func G2()
        $hG2 = GUICreate("GUI2")
        $hButton2 = GUICtrlCreateButton("Zeige GUI1", 20, 20)
        ;Keine Msg-Schleife
    EndFunc
    Alles anzeigen

    Die elegantere Variante wäre es GUIOnEventMode zu verwenden, dann fallen die Msg-Schleifen komplett weg.

  • Text in iFrame schreiben

    • alpines
    • 8. Februar 2018 um 17:06

    Das liegt ganz einfach daran, dass du deine GUIs in den Funktionen erzeugst und in den Funktionen wegen der Msg-Schleife auch wartest.

    Erzeuge vorher alle GUIs und verstecke sie ohne irgendwelche GUI-Nachrichten zu lesen.

    Nachdem du alle erzeugst hast kannst du anfangen eine Msg-Schleife zu bauen (oder auf Events zu warten wenn du OnEventMode verwendest).

  • Dateien zählen und löschen

    • alpines
    • 8. Februar 2018 um 14:35

    Du solltest die Stringliterale "" um den String nicht vergessen, sonst weiß AutoIt nicht um was für einen Datentyp es sich handelt.

  • Dateien zählen und löschen

    • alpines
    • 8. Februar 2018 um 14:17

    @ScriptDir beinhaltet schon den absoluten Pfad bis zum Skriptverzeichnis.

    Dein endgültiger Pfad schaut ungefähr so aus "C:\Users\blabla\Desktop\AutoIt-Skriptverzeichnis\C:\Users\Stefan\Downloads\....".

    Entferne einfach das @ScriptDir & und es sollte laufen. Am besten nimmst du aber einen FileOpenDialog dafür, dann kannst du bei jedem Skriptstart die Datei auswählen.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 13:50

    Du solltest aber vorher prüfen ob du auch wirklich was gefunden hast, ansonsten wird dein Programm crashen.

    Mit UBound kannst du dir die Größe des Arrays ausgeben lassen.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 13:07

    Bitte sieh dir mal die Hilfe genau und und schau nach welchen Befehl du verwendest.

    Bei dem 3. Parameter = 0 $STR_REGEXPMATCH (0) | Returns 1 (match) or 0 (no match). (Default).

    Bei dem 3. Parameter = 3 $STR_REGEXPARRAYGLOBALMATCH (3) | Return array of global matches.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 12:35

    Genau, den musst du in deinen String abspeichern.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 12:24

    Guck dir mit _ArrayDisplay doch mal das Array an. Dann siehst du welchen Index du in deinen String speichern musst.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 12:18

    Guck dir bitte die Funktion StringRegExp in der Hilfe an um nachzuvollziehen was der 3. Parameter macht.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 12:17

    Poste dein Script nochmal. Dein erstes Pattern ist übrigens falsch, du sagst ihm, dass er so viele . wie möglich matchen soll obwohl da nur eins stehen kann.

    Das kann zu falschen Funden führen.

  • Patternübung

    • alpines
    • 8. Februar 2018 um 11:35

    StringRegExp liefert mit dem Parameter 3 ein Array als Ergebnis zurück, kein String.

  • Dateien zählen und löschen

    • alpines
    • 7. Februar 2018 um 22:21

    _FileListToArray spuckt dir in einem Array alle Dateien in einem Verzeichnis aus. _FileListToArrayRec sogar für Unterverzeichnisse.

    Für das Sortieren kannst du _ArraySort verwenden oder etwas eigenes schreiben.

    Gab letztens einen Thread zum Löschen von jüngsten Dateien, vielleicht kriegste das ja abgeändert: Jüngste Datei löschen

  • Hallochen allerseits

    • alpines
    • 7. Februar 2018 um 21:51

    Herzlich Willkommen im AutoIt.de-Forum :part:

    Solange du den Willen mitbringst neue Sachen zu lernen und keinen Code vorgesetzt haben willst, wird dein Vorkenntnisstand niemanden stören.

    Wir helfen immer gerne weiter :)

  • txt umschreiben in andere Form

    • alpines
    • 7. Februar 2018 um 16:55

    Ich kann dir gerne das Pattern erklären aber nicht RegEx komplett, dazu schaust du dir am besten die Hilfe an.

    Auftrag\s+bedeutet suche nach dem String "Auftrag" mit mindestens einem oder so vielen Leerzeichen wie möglich dahinter.

    (\d+\/\d+(?:\s[^\s]+)?) bedeutet, gib mir alle Funde zurück dieses Format erfüllen.

    In Kombination bedeutet das, gib mir alle Funde mit dem Format zurück welche davor ein "Auftrag" mit einem oder mehr Leerzeichen haben.

    Nun zum Format:

    \d+ bedeutet matche mir min. einen oder so viele Dezimalziffern wie möglich.

    / ist ein gewöhnlicher Foreslash und muss nicht escaped werden.

    (?:\s[^\s]+)? sucht nach der Auftragsnummer Daten welche davor ein Leerzeichen haben und anschließend keine Whitespacezeichen (matcht dabei so viele non-whitespaces wie möglich).

    Das ?: bedeutet, dass in dem Ergebnisarray die Funde nicht zurückgegeben werden sollen. Normalerweise wird alles was in () steht im Array zurückgegeben.

    Das ? hinter der Klammer bedeutet, dass diese Gruppe existieren kann, aber nicht muss. Wenn sie existiert, matche sie, wenn nicht, dann egal.

  • txt umschreiben in andere Form

    • alpines
    • 7. Februar 2018 um 16:42

    Mit Auftrag\s+(\d+\/\d+(?:\s[^\s]+)?) sollte es klappen.

  • Start/Stop funktioniert nur ohne GUI

    • alpines
    • 6. Februar 2018 um 19:08
    Zitat von *IrrLichT*

    wie würde das den funktionieren mit den Sprüngen weil bei etwas komplexeren Geschichten hat man ja mehr als eine funktion mit schleifen?...

    Du könntest auch die Funktion mit AdlibRegister alle x Sekunden ausführen, dann kannst du dich sonst wo im Skript befinden.

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™