Fehlersuche - HILFE!?!? :D

  • Hallo,
    ich fange gleich mal an:
    Das ist die Fehlermeldung etc.

    "C:\Program Files (x86)\AutoIt3" /UserParams
    +>19:49:29 Starting AutoIt3Wrapper v.2.0.0.1 Environment(Language:0407 Keyboard:00000407 OS:WIN_VISTA/ CPU:X64 OS:X64)
    >Running AU3Check (1.54.14.0) from:C:\Program Files (x86)\AutoIt3
    +>19:49:29 AU3Check ended.rc:0
    >Running:(3.3.0.0):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "C:\Users\Robert\Desktop\AutoIT\Notendurchschnitt.au3"
    C:\Users\Robert\Desktop\AutoIT\Notendurchschnitt.au3 (55) : ==> Variable used without being declared.:
    $Durchschnitt = ($1 + $2*2 + $3*3 + $4*4 + $5*5 + $6*6)/($1+$2+$3+$4+$5+$6)
    $Durchschnitt = (^ ERROR
    ->19:49:39 AutoIT3.exe ended.rc:1
    +>19:49:40 AutoIt3Wrapper Finished
    >Exit code: 1 Time: 11.511

    Das das Programm:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Notenwert = 0
    HotKeySet ("{Enter}","Zahlen")

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 167, 125, 192, 124)
    $Input1 = GUICtrlCreateInput("Note 1", 24, 16, 73, 21)
    ;$Button1 = GUICtrlCreateButton("Ø", 24, 56, 105, 57)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

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

    Func Zahlen ()
    $Notenwert += 1
    Select
    Case $Notenwert = 1
    $1 = GUICtrlRead ($Input1)
    Case $Notenwert = 2
    $2 = GUICtrlRead ($Input1)
    Case $Notenwert = 3
    $3 = GUICtrlRead ($Input1)
    Case $Notenwert = 4
    $4 = GUICtrlRead ($Input1)
    Case $Notenwert = 5
    $5 = GUICtrlRead ($Input1)
    Case $Notenwert = 6
    $6 = GUICtrlRead ($Input1)
    EndSelect
    If $Notenwert = 7 Then
    $Notenwert = 0
    $Durchschnitt = ($1 + $2*2 + $3*3 + $4*4 + $5*5 + $6*6)/($1+$2+$3+$4+$5+$6)

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

    ToolTip ("Ø "&$Durchschnitt)
    Sleep (2000)
    EndIf
    If $Notenwert = 1 Or $Notenwert = 0 Then
    $Notenwert = 1
    Else
    GUICtrlSetData ($Input1,"Note "&$Notenwert)
    EndIf
    EndFunc

    [/autoit]

    Und das mein Problem ;D :
    Ich habe KEINE AHNUNG, was ich falsch gemacht habe und komme auch nicht drauf...
    also falls einer von euch mir da vlt. auf die Sprünge helfen könnte, wäre das SEHR NETT! =)
    ==> Das soll den Notendurchschnitt ausrechnen,... ich glaube dafür gibt es eig. schon eine Funktion, aber ich will ja nur ein bisschen üben/Spaß haben
    UND: Im Input würde man dann die Anzahl der entsprechenden Note eingeben... ihr könnt es ja mal kopieren und ausprobieren =)
    Wenn man alle Noten eingegeben hat (Mit "Enter" bestätigt man diese), dann kommt der Fehler.
    Ach ja und noch als Hintergrundinformation: Eig. sollte dann dieser ToolTip erscheinen... ;D

    => Das haben wir hier doch lange nicht mehr, dass jmd. einen Fehler im Programm nicht findet :D

    Mit sehr freundlichen Grüßen
    MasterRobb

    Lächel, du kannst sie nicht alle töten.

    2 Mal editiert, zuletzt von masterRobb (5. November 2009 um 22:41)

  • hmm danke für die Hilfe ABER :
    Bei mir klappt es dann dennoch nicht, also... wenn ich es dann wieder ausprobiere kommt im ToolTip irgendwas total falsches raus xD

    Ach ja und könntest du mir das nochmal genauer erklären mit dem Local, also warum? => Am besten in Baby-Sprache ;D => bin noch ein ziemlicher Anfänger

    Lächel, du kannst sie nicht alle töten.

    • Offizieller Beitrag

    Wenn man dein Script sieht fällt mir erstmal auf, das Oscars Lösung falsch ist.

    [autoit]

    Local $1, $2, $3, $4, $5, $6

    [/autoit]


    Die Variablen müssen ausserhalb der Funktion Global deklariert werden, da mit jedem aufruf der Funktion nur in einer Variable der Wert zugewiesen wird.
    Wenn die Variablen Local in der Funktion definiert werden, so exitieren Sie nicht mehr wenn die Funktion verlassen wird.
    Deine Durchschnittsberechnung ist auch falsch.
    Wenn ich nicht komplett neben der Spur bin, würde es sinnigerweise bei 6 Noten so aussehen:

    [autoit]

    $Durchschnitt = ($1+$2+$3+$4+$5+$6)/6

    [/autoit]


    Also Summer aller Noten durch die Anzahl der Noten. Oder sehe ich das jetzt falsch?

    Zum Thema Local und Global schau dir mal die Hilfe an.

    Edit nach deiner Berechnungsformel würde eine 6 malige Eingabe einer 1 den Durchschnitt von 3,5 ergeben 8|

    [autoit]

    ConsoleWrite((1 + 1 * 2 + 1 * 3 + 1 * 4 + 1 * 5 + 1 * 6) / (1 + 1 + 1 + 1 + 1 + 1) & @CRLF)
    ConsoleWrite((1 + (1 * 2) + (1 * 3) + (1 * 4) + (1 * 5) + (1 * 6)) / (1 + 1 + 1 + 1 + 1 + 1) & @CRLF)

    [/autoit]


    Die Klammern in der 2. Reihe dienen nur der Übersichtlichkeit ;)

    • Offizieller Beitrag

    Hatte gerade Langeweile und hab das Script umgeschrieben:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    $Notenwert = 0
    HotKeySet("{Enter}", "Zahlen")
    Global $1, $2, $3, $4, $5, $6
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 167, 125, 192, 124)
    $Label = GUICtrlCreateLabel("Note 1 eingeben", 24, 16, 105, 17)
    $Input1 = GUICtrlCreateInput("", 24, 56, 73, 21, $ES_NUMBER)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

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

    Func Zahlen()
    $Notenwert += 1
    Switch $Notenwert
    Case 1
    $1 = GUICtrlRead($Input1)
    Case 2
    $2 = GUICtrlRead($Input1)
    Case 3
    $3 = GUICtrlRead($Input1)
    Case 4
    $4 = GUICtrlRead($Input1)
    Case 5
    $5 = GUICtrlRead($Input1)
    Case 6
    $6 = GUICtrlRead($Input1)
    EndSwitch
    If $Notenwert = 6 Then
    $Notenwert = 0
    $Durchschnitt = ($1 + $2 + $3 + $4 + $5 + $6) / 6
    ToolTip("Ø " & $Durchschnitt)
    EndIf
    GUICtrlSetData($Label, "Note " & $Notenwert + 1&" eingeben")
    GUICtrlSetData($Input1, "")
    EndFunc ;==>Zahlen

    [/autoit]
  • xD
    wie du schon sagst: Summe aller Noten durch die Anzahl der Noten :D xD => Anzahl der Note ist da anders gemeint ;D nicht 6 sondern wie viele Noten insg. vergeben wurden.
    Also bei 30 Schülern wäre es dann :30 (insofern keiner Krank war etc. ;D)
    UND ich finde es SUPER das du gerade Langeweile hattest :D
    Ach ja und RICHTIG GEILES PROFILBILD!!! + Angaben echt hammaaaa!! :D

    Jetzt hätte ich fast vergessen mich zu bedanken - DANKE
    @

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    $Notenwert = 0
    HotKeySet("{Enter}", "Zahlen")
    Global $1, $2, $3, $4, $5, $6
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 167, 125, 192, 124)
    $Label = GUICtrlCreateLabel("Note 1 eingeben", 24, 16, 105, 17)
    $Input1 = GUICtrlCreateInput("", 24, 56, 73, 21, $ES_NUMBER)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

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

    Func Zahlen()
    $Notenwert += 1
    Switch $Notenwert
    Case 1
    $1 = GUICtrlRead($Input1)
    Case 2
    $2 = GUICtrlRead($Input1)
    Case 3
    $3 = GUICtrlRead($Input1)
    Case 4
    $4 = GUICtrlRead($Input1)
    Case 5
    $5 = GUICtrlRead($Input1)
    Case 6
    $6 = GUICtrlRead($Input1)
    EndSwitch
    If $Notenwert = 6 Then
    $Notenwert = 0
    $Durchschnitt = ($1 + $2*2 + $3*3 + $4*4 + $5*5 + $6*6) / ($1 + $2 + $3 + $4 + $5 + $6)
    ToolTip("Ø " & $Durchschnitt)
    EndIf
    GUICtrlSetData($Label, "Note " & $Notenwert + 1&" eingeben")
    GUICtrlSetData($Input1, "")
    EndFunc ;==>Zahlen

    [/autoit]


    So klappts jetzt :D
    Ach und danke, das mit dem Label... wieder was schönes gelernt ;D

    SO JETZT NOCH MAL DAS LETZTE: GANZ GANZ GANZ WICHTIG!!! : So EXTREM WICHTIG, DASS ICH SOGAR DIESES "WICHTIG" EXTREM BESONDERS STARK BETONE!!!


    Gibts eig. auch irgendein Thread wo man danke sagen kann - oder habt ihr das schon probiert und dann sind die Server EX gegangen ? ;D :D


    ____________________________________________
    der Typ mit zu vielen Smilies :D
    Rechtschreibfehler sind Eigentum von Robert K., bei Diebstahl wird geahndet. Eltern haften für ihre Kinder!!!

    Lächel, du kannst sie nicht alle töten.

    2 Mal editiert, zuletzt von masterRobb (5. November 2009 um 22:43)

    • Offizieller Beitrag

    OK. 1:0 für dich.
    Habe dein Problem mit dem Notendurchschnitt, anhand deiner Beschreibung nicht verstanden.
    Deine Rechnung stimmt. Ich dachte du wolltest deinen Notendurchschnitt errechnen. :rolleyes:

    Edit: Zu deiner letzen Frage, so einen Thread gibt´s hier im Forum nicht. Ich glaub wird brauchen sowas auch nicht, um unser Ego zu stützen. 8)