Finde Fehler nicht...

  • Hallo zusammen

    ich hab da ein Script zum Versenden von SMS über einen Webdienst, im Grunde funktioniert auch alles, nur wird nun bei Klick auf einen der 5 Buttons $idMUSTER[] stets der Text von Button 5 $idMUSTER[4] ins Textfeld eingefügt und ich finde einfach keine Erklärung dafür. In den Tooltips wird korrekt der jeweilige Text angezeigt, was ja heissen dürfte, die Buttons werden korrekt angezeigt. Auch im Teil des Scripts, der den Text aus der .txt ins Textfeld kopiert, sehe ich keinen Fehler.

    Könnte mir hier bitte jemand sagen, was hier das Problem sein könnte? Danke schonmal.


    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • nur wird nun bei Klick auf einen der 5 Buttons $idMUSTER[] stets der Text von Button 5 $idMUSTER[4] ins Textfeld eingefügt und ich finde einfach keine Erklärung dafür

    Case $muster[0] To $muster[$loop - 1]
    For $i = 0 To $loop - 1
    GUISetState(@SW_SHOW, $hGUI2)
    GUICtrlSetData($text_neu, $text[$i])
    Global $idGUI = $i
    Next

    For $i = 0 To $loop - 1
    GUICtrlSetData($idTEXT, $text[$i])
    Next

    Kein Wunder wenn du alle Texte iterierst, er fügt nicht den Text von Button 5 ein sondern den Text von dem 1. dann dem 2. usw. bis zum 5.

    Du solltest lieber prüfen welchen Case du gerade hast und diesen Index nehmen, also: $text[$msg - $muster[0]]

  • Du solltest lieber prüfen welchen Case du gerade hast und diesen Index nehmen, also: $text[$msg - $muster[0]]

    Ich glaube, Du meinst das so, dass ich beim Case abfragen sollte, welcher genau das ist, aber das versuchte ich schon so und dann ohne For-Schleife:

    Code
    Case $idMUSTER[$i]
      GUICtrlSetData($idTEXT, $text[$i])

    und eine For-Schleife für jeden einzelnen Case funktionierte auch nicht, innerhalb von Switch seien keine For-Schleifen erlaubt. Wie kann ich denn das auf einfache weise rausfinden, welcher Wert des Arrays gerade übergeben wird? Eine Funktion gibts ja meines Wissens dafür nicht. Muss ich oberes Beispiel tatsächlich 5x wiederholen?

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • Ich hab dir doch direkt die Lösung gepostet. $text[$msg - $muster[0]] Das Case To kann bleiben aber du musst die For-Schleife rausnehmen und prüfen welchen Index du gerade hast.

    Da AutoIt alle Controls in einer aufsteigenden Zahlenfolger erstellt kannst du einfach die Nachricht - dem 1. Control rechnen und kriegst dann den Index 0 wenn Button 1 gedrückt wurde.

    Bei Button 5 kriegst du dann Index 4 usw.

  • Ich kapier das irgendwie nicht, dann müsste das so doch gehen:

    Code
    Case $idMUSTER[0] To $idMUSTER[$loop - 1]
             GUICtrlSetData($idTEXT, $text[$msg - $muster[0]])

    Roli von Gunten

    << Alles Gute kommt von Gunten >>

  • Ganz genau, hier mal ein minimalisiertes Beispiel.

  • Ich sehe grad, du verwendest ja einen anderen GUIGetMsg-Modus und da funktioniert das nicht so ganz trivial.

    Dein ganzer Code generell ist ziemlich schäbig und du hast viele Inkonsistenzen drinne, du solltest diesen mal erst richtig strukturieren.

    Wieso verwendest du überhaupt GUIGetMsg(1)? Du brauchst so zwei Switches, du hättest einfach nur GUIGetMsg() nehmen können wenn du schon auf die Extrainformationen nicht zugreifst.

    Hier mal in deinen Code eingesetzt aber ich würde auf keinen Fall den Code so stehen lassen wie er im Moment ist, wenn du zwei Wochen daran nicht arbeitest blickst du nicht merh durch.

  • Ah ja, ich glaube, jetzt kapier ichs, ....

    Code
    $msg = GUIGetMsg(1)
       Switch $msg[1]
       Case $hGUI1
          Switch $msg[0]

    GUIGetMsg(1) liefert den Array, $msg[1] enthält dann den Handle des GUI's, also hier entweder $hGUI1 oder $hGUI2 und unten $msg[0] enthält dann die ID des Controls.

    Betreffend des Codes an sich hab ich schon erwartet, dass das aus Profi-Sicht Geschnipsel ist. Ist erst mein zweites Script und hab da immer mal wieder Funktionen hinzugefügt. Aber werd das versuchen, selber mal ein bisschen zu überarbeiten.

    Aber trotzdem vielen Dank für die Hilfe bei diesem Problem hier! :thumbup::thumbup:

    Roli von Gunten

    << Alles Gute kommt von Gunten >>