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

Beiträge von bigeasy76

  • String aktualisieren klappt nicht

    • bigeasy76
    • 11. Juni 2018 um 18:02

    Hallo zusammen

    hab mal schon wieder ein Anfängerproblem, bei dem ich nicht weiterkomme. Wäre froh, wenn mir jemand helfen könnte: Es geht um die gleiche Sache, bei der mir Oscar gestern schon half. Das Script soll aus einem String Name und Vorname auslesen, was dank Oscar soweit klappt. Nun sollen beim Namen Umlaute eingefügt werden, was auch klappt. Dann soll der aktualisierte Namen wieder in den String gesetzt werden, wo vorher schon der Name ohne Umlaute stand.

    Dazu bin ich nun so weit:

    Code
    Local $insText = ClipGet()
       Global $Name = StringRegExpReplace($insText, '(?s).+Name / Vorname\v+(.+?)\v.*', '$1')
       Global $NameAlt = $Name
    ;~ MsgBox($MB_OK, "", $NameAlt)
       Global $aReplaceChars[8][2] = [[7],['AE','Ä'],['OE','Ö'],['UE','Ü'],['ae','ä'],['oe','ö'],['ue','ü'],['ß','ss']]
    
       For $i = 1 To $aReplaceChars[0][0]
        $Name = StringReplace($Name, $aReplaceChars[$i][0], $aReplaceChars[$i][1], 0, 1)
     Next
     MsgBox($MB_OK, "", $Name)
       If StringReplace($insText, $NameAlt, $Name) Then MsgBox($MB_OK, "", "Konnte String aktualisieren")
    Alles anzeigen

    Anhand der eingebauten Textausgaben konnte ich feststellen, dass alles klappt und beim Namen die Umlaute gesetzt werden. Dann zum Schluss erhalte ich auch die Erfolgsmeldung, dass der String aktualisiert wurde, das ist aber nicht der Fall. Aber woran das liegt, krieg ich irgendwie nicht raus, hab ich bei StringReplace() was falsch konfiguriert?

    Bin für jede Hilfe dankbar.

    Gruss Dani

  • RegEx: Linie nach bestimmter Linie

    • bigeasy76
    • 10. Juni 2018 um 16:03

    Funktioniert tiptop, vielen Dank Oscar für die Hilfe, war wohl doch nicht so einfach, wie ich dachte.

  • RegEx: Linie nach bestimmter Linie

    • bigeasy76
    • 10. Juni 2018 um 15:39
    Code
    Local $Text = "Personalien / Kontaktdaten des Kandidaten
    Name / Vorname
    MUSTER HANS PETER
    Staatsangehörigkeit
    CH
    Adresse
    Musterstr. 9, 8001 Zürich
    Mobiltelefon
    +41 79 999 99 99"
       
       $Name = StringRegExp($Text, "Name / Vorname\sA-Z*$", 1) ; Hier einer der Versuche
       MsgBox($MB_OK, "", $Name)
    Alles anzeigen

    Die Variable $Text ist hier vermutlich falsch, eigentlich wird dort über ClipGet() der Inhalt des Clipboards geladen, wie dort dann Zeilenumbrüche erfasst werden, ist mir nicht ganz klar, ausprobieren geht im Moment nicht, da ich dann den Firmen-PC bräuchte. Aber in dieser Form, wie die Variable $Text hier dargestellt ist, funktioniert sie ja nicht, muss ja aber die Zeilenumbrüche trotzdem darstellen.

  • RegEx: Linie nach bestimmter Linie

    • bigeasy76
    • 10. Juni 2018 um 14:54

    Hallo zusammen

    ich brüte schon stundenlang über einer RegEx Abfrage eines aus dem Clipboard kopierten Strings. Die Lösung ist vermutlich ziemlich einfach, trotzdem fand ich sie trotz stundenlangem googeln und probieren nicht raus. Vielleicht kann mir hier ja bitte jemand weiterhelfen:

    Der Text aus dem Clipboard besteht aus vielen Linien. Ich müsste nun den String nach "Vorname / Name" durchsuchen. Dann kommt in der folgenden Linie Vor- und Nachnamen, der teils aus mehreren Vornamen und Hauptnamen besteht, jedoch ist in dieser Linie stets alles in Grossschrift. Diese Linie mit den Namen müsste ausgelesen werden. Bins mit dem String Regular Expression Tester am ausprobieren, mit folgenden Versuchen, teils mit/ohne Klammern, statt . A-Z, usw.:

    Code
    StringRegExp($Value, "(Name / Vorname)\s^.*$", 1)
    StringRegExp($Value, "Name / Vorname\s^A-Z*$", 1)
    StringRegExp($Value, "(Name / Vorname)\s^(A-Z)*$", 1)
    StringRegExp($Value, "Name / Vorname\s.*$", 1)

    Leider bekomme ich entweder immer nur einen Fehler (0) oder sonst nur "Name / Vorname" ausgegeben.

    Kann mir bitte jemand weiterhelfen und sagen, was ich hier falsch mache? Ist für einen Profi wohl ein Anfängerproblem. Aber Danke schon jetzt mal.

    Dani

  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 2. Mai 2018 um 14:58
    Zitat von Oscar

    Dann ändere das folgendermassen: GUICtrlSetData($idLABEL4, Int(($iLen - 1) / 160) + 1)

    Tiptop, nun läufts prima!

    Nochmals Besten Dank an die Herren für die Hilfe! :thumbup::thumbup:

  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 2. Mai 2018 um 08:36

    Vielen Dank an Oscar und Bitnugger, wirklich toll, wie man hier in diesem Forum unterstützt wird, auch wenns bescheuerte Anfängerfragen sind! Nun funktionierts wunderbar.

    Eine Frage noch an Oscar: Die Anzeige der Anzahl SMS hast Du ja zur Funktion Int($iLen / 160) + 1 geändert. Nun gibts aber einen kleinen Fehler: Pro SMS kann man 160 Zeichen verwenden, dh. der SMS-Zähler sollte eigentlich erst bei 161 Zeichen zu 2 SMS wechseln, bei 321 zu 3, usw. Wenn ich Int($iLen / 161) + 1 verwende, kommts ja ab dem 2. SMS auch falsch raus. Hast Du evtl. noch eine Idee, man kann das sicher eleganter lösen, als ich es zu Anfang tat, oder?

  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 1. Mai 2018 um 17:49

    Hallo Oscar

    kein Problem, hab das schon selber befürchtet. Hier das ganze Script:

    C
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    
    
    SMSFenster()
    
    Func SMSFenster()
    
       $hGUI = GUICreate("SMS Box", 600, 600)
       $idLC = GUICtrlCreateInput("0041(0)", 10, 5, 45, 20, $ES_READONLY)
       $idVORWAHL = GUICtrlCreateCombo("76", 55, 5, 40, 20)
       GUICtrlSetData(-1, "77|78|79")
       Global $idNR = GUICtrlCreateInput("", 93, 5, 60, 20, $ES_NUMBER)
       GUICtrlSetLimit(-1, 7)
       Global $idTEXT = GUICtrlCreateEdit("", 10, 40, 300, 200, $ES_MULTILINE)
       GUICtrlSetLimit(-1, 800)
       Global $idSENDEN = GUICtrlCreateButton("Senden", 30, 250, 85, 25)
       $idENDE = GUICtrlCreateButton("Schliessen", 130, 250, 85, 25)
       Global $idDEL = GUICtrlCreateButton("Löschen", 230, 250, 85, 25)
       $idLABEL1 = GUICtrlCreateLabel("Natelnummer eingeben", 155, 8, 150, 20)
       Global $idLABEL2 = GUICtrlCreateLabel("0", 320, 40, 30, 20)
       $idLABEL3 = GUICtrlCreateLabel("Anzahl Zeichen (max. 800)", 360, 40, 130, 20)
       Global $idLABEL4 = GUICtrlCreateLabel("0", 320, 70, 30, 20)
       $idLABEL5 = GUICtrlCreateLabel("Anzahl SMS (max. 5)", 360, 70, 100, 20)
       Global $oIE = ObjCreate("Shell.Explorer.2")
       $GUIActiveX = GUICtrlCreateObj ($oIE, 10, 300, 580, 285)
    
       GUISetState(@SW_SHOW, $hGUI)
    
       GUIRegisterMsg($WM_KEYDOWN, "SCHREIBEN")
    
       While 1
          Switch GUIGetMsg()
             Case $GUI_EVENT_CLOSE, $idENDE
                Exit
          EndSwitch
       WEnd
    EndFunc
    
    Func SCHREIBEN()
       Switch GUIGetMsg()
          Case $idTEXT
             Local $ZAEHLER = 0
             $TEXTtemp = GUICtrlRead($idTEXT)
             $ZAEHLER = StringLen($TEXTtemp)
             GUICtrlSetData($idLABEL2, $ZAEHLER)
    
             Select
                Case $ZAEHLER <=160
                   GUICtrlSetData($idLABEL4, 1)
    
                Case $ZAEHLER >160 And $ZAEHLER <=320
                   GUICtrlSetData($idLABEL4, 2)
    
                Case $ZAEHLER >320 And $ZAEHLER <=480
                   GUICtrlSetData($idLABEL4, 3)
    
                Case $ZAEHLER >480 And $ZAEHLER <=640
                   GUICtrlSetData($idLABEL4, 4)
    
                Case $ZAEHLER >640
                   GUICtrlSetData($idLABEL4, 5)
             EndSelect
    
    
          Case $idDEL
             GUICtrlSetData($idTEXT, "")
             GUICtrlSetData($idNR, "")
    
          Case $idSENDEN
             $NR = "0041"&GUICtrlRead(4)&GUICtrlRead(5)
             $TEXT = GUICtrlRead(6)
             MsgBox($MB_OKCANCEL, "Senden?", "http://www.lox24.eu/API/httpsms.php?konto=xxx&password=xxx&service=11171&from=0041444444444&to="& $NR &"&text="& $TEXT)
    
             $oIE.navigate("http://www.lox24.eu/API/httpsms.php?konto=xxx&password=xxx&service=11171&from=0041444444444&to="&$NR&"&text="&$TEXT)
    
       EndSwitch
       GUIDelete()
    EndFunc
    Alles anzeigen
  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 1. Mai 2018 um 10:26

    Vielen Dank schonmal. Müsste ich aber anstatt des Events WM_COMMAND in meinem Fall nicht den Event WM_KEYDOWN verwenden? Ich hab nun mal folgendes zusammengeschustert, ich glaube, man merkt, dass ich ein blutiger Anfänger bin, ist erst mein zweites Script:

    Code
    GUIRegisterMsg($WM_KEYDOWN, "SCHREIBEN")
    
       While 1
          Switch GUIGetMsg()
             Case $GUI_EVENT_CLOSE, $idENDE
                Exit
          EndSwitch
       WEnd
    EndFunc
    
    Func SCHREIBEN()
       Switch GUIGetMsg()
          Case $idTEXT
             Local $ZAEHLER = 0
             $TEXTtemp = GUICtrlRead($idTEXT)
             $ZAEHLER = StringLen($TEXTtemp)
             GUICtrlSetData($idLABEL2, $ZAEHLER)
    
             Select
                Case $ZAEHLER <=160
                   GUICtrlSetData($idLABEL4, 1)
    
                Case $ZAEHLER >160 And $ZAEHLER <=320
                   GUICtrlSetData($idLABEL4, 2)
    
                Case $ZAEHLER >320 And $ZAEHLER <=480
                   GUICtrlSetData($idLABEL4, 3)
    
                Case $ZAEHLER >480 And $ZAEHLER <=640
                   GUICtrlSetData($idLABEL4, 4)
    
                Case $ZAEHLER >640
                   GUICtrlSetData($idLABEL4, 5)
             EndSelect
    
    
          Case $idDEL
             GUICtrlSetData($idTEXT, "")
             GUICtrlSetData($idNR, "")
    
          Case $idSENDEN
             $NR = "0041"&GUICtrlRead(4)&GUICtrlRead(5)
             $TEXT = GUICtrlRead(6)
             MsgBox($MB_OKCANCEL, "Senden?", "http://www.lox24.eu/API/httpsms.php?konto=xxx&password=xxx&service=11171&from=0041442222222&to="& $NR &"&text="& $TEXT)
    
             $oIE.navigate("http://www.lox24.eu/API/httpsms.php?konto=xxx&password=xxx&service=11171&from=0041442222222&to="&$NR&"&text="&$TEXT)
    
       EndSwitch
       GUIDelete()
    EndFunc
    Alles anzeigen

    Nun passiert aber gar nichts mehr, auch bei Klick ins Label bleibt die Null. Meine Vermutung ist, dass die Funktion SCHREIBEN schon gar nicht aufgerufen wird, aber warum, ist mir nicht ganz klar. In der Referenz steht zu GUIRegisterMsg(), dass in der aufzurufenden Funktion nicht mehr als 4 Variablen definiert sein dürften, sonst werde die Funktion nicht aufgerufen. Aber müssen denn überhaupt Variablen definiert sein oder gehts auch ohne? Oder liegt der Fehler vielleicht doch woanders?

  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 28. April 2018 um 16:28

    Hi Bitnugger

    ich seh hier, dass der Aufruf der Funktion über GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") gemacht wird, ich versteh die Funktionsweise hier noch nicht ganz. Laut Referenz sind $lParam und $wParam der 1. und 2. "Message Parameter" als Hex-Wert. Leider ist mir hier nicht ganz klar, was diese Parameter genau beinhalten, 1. und 2. Message Parameter.

    Und bei den Funktionen _WinAPI_LoWord($wParam) und _WinAPI_HiWord($wParam) steht, diese liefern "the high/low word of a longword value". Mein Englisch ist hier leider nicht so gut, aber ich vermute, dass es hier nicht um Klein/Grossschrift geht, was sind denn High/Low Word?

  • Label zeigt Änderung nur auf Klick

    • bigeasy76
    • 27. April 2018 um 18:50

    Hallo zusammen

    ich komme bei einem Script einfach nicht weiter, gemäss allen Infos, die ich finden konnte, sollte das eigentlich funktionieren. Ich habe eine SMS-Box erstellt für den Versand von SMS. Die Idee ist nun, dass bei einem Label neben dem Feld für den Text die Anzahl eingegebener Zeichen erscheinen soll, zudem eine Anzeige, wieviel SMS es werden, jedes fasst 160 Zeichen, 800 ist die max. Anzahl Zeichen, also 5 SMS.

    Dazu schrieb ich folgendes, damits nicht zuviel wird, nur der relevante Teil:

    Code
    Switch GUIGetMsg()
             Case $GUI_EVENT_CLOSE, $idENDE
                ExitLoop
    
             Case $idTEXT
                Local $ZAEHLER = 0
                $TEXTtemp = GUICtrlRead(6)
                $ZAEHLER = StringLen($TEXTtemp)
                GUICtrlSetData($idLABEL2, $ZAEHLER)
    
                Select
                Case $ZAEHLER <=160
                   GUICtrlSetData($idLABEL4, 1)
    
                Case $ZAEHLER >160 And $ZAEHLER <=320
                   GUICtrlSetData($idLABEL4, 2)
    
                Case $ZAEHLER >320 And $ZAEHLER <=480
                   GUICtrlSetData($idLABEL4, 3)
    
                Case $ZAEHLER >480 And $ZAEHLER <=640
                   GUICtrlSetData($idLABEL4, 4)
    
                Case $ZAEHLER >640
                   GUICtrlSetData($idLABEL4, 5)
                EndSelect
    
    
             Case $idDEL
                GUICtrlSetData($idTEXT, "")
                GUICtrlSetData($idNR, "")
    
             Case $idSENDEN
                $NR = "0041"&GUICtrlRead(4)&GUICtrlRead(5)
                $TEXT = GUICtrlRead(6)
                MsgBox($MB_OKCANCEL, "Senden?", "http://www.lox24.eu/API/httpsms.php?konto=xxxxx&password=xxxxx&service=11171&from=0041442222222&to="& $NR &"&text="& $TEXT)
    
                $oIE.navigate("http://www.lox24.eu/API/httpsms.php?konto=xxxxx&password=xxxxx&service=11171&from=0041442222222&to="&$NR&"&text="&$TEXT)
    
          EndSwitch
    Alles anzeigen

    Nun ändert sich während der Texteingabe aber keines der zwei Labels, nur wenn man mit der Maus auf das Label klickt, kommt sofort die richtige Anzahl Zeichen und SMS, die Funktion an sich scheint also zu arbeiten.

    Aber ich komme einfach nicht drauf, warum sich der Wert in den Labels nur auf Mausklick ändert.

    Kann hier bitte jemand weiterhelfen? Vielen Dank jetzt schonmal!

    LG Dani

  • Hotkey; Anfängerfrage

    • bigeasy76
    • 23. April 2018 um 19:05

    Ja, das war verständlich genug.

    Ich bedanke mich bei den Herren für die schnelle und ausführliche Hilfe, wirklich grossartig!

  • Hotkey; Anfängerfrage

    • bigeasy76
    • 22. April 2018 um 17:09

    Hallo Chesstiger

    Danke, jetzt funzt das tatsächlich. Ich hatte sowas in diesem anderen Script schon auch gesehen, ging aber davon aus, dass es nichts mit den Hotkeys zu tun hat. Ich dachte, sonst müssten die Hotkeyaufrufe innerhalb der While-Schleife (anstelle von Sleep (20)) eingefügt sein.

    Wenn ich noch nachfragen darf: Heisst das, die Funktion Hotkeyset gibt True aus, solange sie nicht aktiviert wurde oder steht das True für die Abfrage, ob das Script noch läuft, resp. nun an dieser Stelle angekommen ist?

    Aber auf jeden Fall vielen Dank für die Hilfe!

  • Hotkey; Anfängerfrage

    • bigeasy76
    • 22. April 2018 um 15:48

    Hallo zusammen

    ich weiss, das ist wohl eine Anfängerfrage, dennoch fand ich auch in anderen Foren leider keine Hinweise aufs Problem und bei der deutschen Hilfe-Übersetzung fehlt leider genau dieser Teil zu Hotkeys.

    Ich will gewisse Tastenkombis wie Ctrl+a, Ctrl+c oder Alt+Tab auf F-Tasten legen, dazu verfasste ich folgendes:

    Code
    HotKeySet("{F5}", "Markieren")
    HotKeySet("{F6}", "Kopieren")
    HotKeySet("{F7}", "Fensterwechsel")
    
    Func Markieren()
       Send("^a")
    EndFunc
    
    Func Kopieren()
       Send("^c")
    EndFunc
    
    Func Fensterwechsel()
       Send("!{TAB}")
    EndFunc
    Alles anzeigen

    Nun funktioniert das Ganze aber nicht, das Script scheint kurz zu laufen und beendet dann gleich wieder. Leider ist mein Englisch nicht so gut, aber soweit ich es verstand, sollte dies so funktionieren. In einem anderen Forum sah ich dasselbe Beispiel in einem umfangreicheren Script, nur dass eine andere Funktion als Send aufgerufen wurde. Sehr wahrscheinlich liegt der Fehler sehr nahe, aber ich komme hier nicht weiter, ich versuchte schon, eine if-Abfrage zu setzen, das ging aber auch nicht.

    Code
    #if HotKeySet("{F5}", "Markieren") MsgBox F5 gedrückt
    #if HotKeySet("{F6}", "Kopieren") MsgBox F6 gedrückt
    #if HotKeySet("{F7}", "Fensterwechsel") MsgBox F7 gedrückt

    Wäre äusserst froh, wenn mir jemand weiterhelfen könnte, liegt es vielleicht daran, dass man F-Tasten nicht anders belegen darf? Andererseits gehts auch mit anderen Tasten nicht. Auf jeden Fall schonmal Danke für jeden Tipp.

    Gruss aus der Schweiz

    Daniel

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™