function soll immer wiederhol werden bis benutzerabbruch

  • hallo bei meiner gui soll wenn die func loesung() fertig ist die Func aufgabe()neu gestartet werden

    Spoiler anzeigen
    [autoit]


    #include <GuiButton.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <_Array2DInsert.au3>
    Local $avArray[1] ,$loesung[1] ,$aufgabemitergebis[10][2]
    #Region ### START Koda GUI section ### Form=

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

    ;guikopf
    $Form1_1 = GUICreate("mathe mit klammern 5klasse realschule", 637, 600, 193, 125,@SW_SHOWMAXIMIZED)
    ;;;;;;;;;;;;erstes feld
    $Button5 = GUICtrlCreateButton("Exit", 272, 500, 89, 25)
    $Input1 = GUICtrlCreateInput("", 24, 16, 593, 57);aufgabe anzeige
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif");style der aufgabe
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $Button1 = GUICtrlCreateButton("=", 288,260, 49, 41, $WS_GROUP); mitte
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
    ;,,,,,,,,2tes augabefeld (ergbnis)
    $Input2 = GUICtrlCreateInput("", 24, 100, 593, 49)
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif");style

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

    aufgabe()

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button5
    Exit

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

    Case $Button1
    loesung()
    loeschen()
    aufgabe()
    EndSwitch
    WEnd

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

    Func aufgabe()
    $iformel0= Random(200, 900, 1)
    $iformel1 = Random(1, 900, 1) ;wert 1teklammer
    $iformel2 = Random(1, 800, 1)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $iformel3 = Random(1, 900, 1) ;wert 2teklammer
    $iformel4 = Random(1, 800, 1)
    $var3 =$iformel0+($iformel1-$iformel2)+($iformel3+$iformel4)
    _ArrayAdd($loesung,$var3)
    _ArrayDisplay( $var3)
    _ArrayDisplay($loesung)

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

    _ArrayAdd($avArray,$iformel0)
    ;;;;;;;;;;1te klammer aufbau
    _ArrayAdd($avArray,"+(")
    _ArrayAdd($avArray,$iformel1)
    _ArrayAdd($avArray,"+")
    _ArrayAdd($avArray,$iformel2)
    _ArrayAdd($avArray,")")
    ;;;;;;;;;;2te klammer
    _ArrayAdd($avArray,"- (")
    _ArrayAdd($avArray,$iformel3 )
    _ArrayAdd($avArray,"+" )
    _ArrayAdd($avArray,$iformel4 )
    _ArrayAdd($avArray,")")
    ;;;;;;;;;;;;;;inhalt $aArray überprüfen
    _ArrayDisplay($avArray, "$avArray VOR _ArrayInsert()")
    ;;;;;;;;;;;;umwandel zur ausgabe
    $var =_ArrayToString($avArray)
    $var1 =StringReplace ( $var, "|", " " )

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

    guictrlsetdata($Input1 ,$var1);schreibe die aufgabe

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

    GUICtrlSetState($Input1, $GUI_disable);und disabel dasfeld

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

    GUICtrlSetState($Input2, $GUI_FOCUS);aktiviere eingabe feld

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

    ;$var =1+(5-2)+(8+2)
    EndFunc

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

    func loesung()

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

    $eingabe=GUICtrlRead ( $Input2 );lese eingabe
    ;,, ergnis umwandel für ausgabe
    $ergebnis= _ArrayToString($loesung)
    $ergebnis1= StringReplace ( $ergebnis, "|", " " )
    MsgBox(0, 'eingabe', $eingabe)
    MsgBox(0, 'ergebnis', $ergebnis1)
    if $eingabe = $ergebnis1 Then

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

    Else
    MsgBox(0, 'Ergebnis mit klammern ist richtig ',$ergebnis1 )
    EndIf

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

    EndFunc

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

    func loeschen()
    ;;;;;loesche array aufgabe
    Global $avArray[1], $loesung[1]
    ;_ArrayDisplay($avArray, "aufgabe") test ob arryay geloescht ist
    ;,,,,,,,,,,,,,loesche loesung
    ; _ArrayDelete( $loesung,1)
    ; _ArrayDisplay($loesung, "loesung") test ob arryay geloescht ist
    EndFunc

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


    hat einer nee idee.danke im vorraus

    2 Mal editiert, zuletzt von rewejo (15. November 2010 um 17:50)

  • also so wie ich das verstanden habe, sollen sich beide Funktionen immer gegenseitig starten.
    dann müsste man einfach nur loesung() ans ende der aufgabe() schreiben und umgekehrt.

    Edit:

    Ich weiß ehrlich gesagt gar nicht, was genau du willst.

    ich schließe mich dir an...

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • ok ich sagmal was die gui machen soll
    im ersten inputfeld erschein eine rechenaufgabe
    im zweiten feld wird auf ein lösungeingabe
    durch drücken von = wird aus gewertet eskommmt dann ne mgsbox mit richtig
    wenn diese box weg ist soll eine neue aufgabe kommen.
    im moment beendet sich die gui

  • Jupp wie autobert sagt. Aber zusätzlich sollten noch die beiden Arrays geleert werden bevor die Funktion aufgabe() erneut ausgeführt wird. Ansonsten wird nicht nur die Aufgabe bei jedem Durchgang länger, sondern auch die Ergenisabfrage/kontrolle funktioniert nicht mehr richtig.

  • Hallo rewejo,

    das leeren von Arrays kannst du auch durch eine Neudeklaration erreichen, wenn du also

    [autoit]

    Global $avArray[1], $loesung[1]

    [/autoit]

    in die func aufgabe nimmst und meinen vorherigen Post (#5) beachtest sollte alles klappen ,

    mfg autoBert