3 kleine Probleme :/

  • So, hallo erstmal.^^

    Wer meinen Vorstellungsthread gelesen hat weis vlt., das ich noch nicht so lange mit AutoIt arbeite, deswegen nehmt mir meine Probleme hier nicht zu übel.^^

    Ich versuche gerade meine bisherigen Kentnisse auf was nützliches anzuwenden, also hab ich mir gedacht, bastel ich mir nen Notenrechner. So ganz simpel, Noten eintragen, unten gibt er mir dann den Notendurschnitt an. Nichts kompliziertes halt. Könnte man meinen. :D

    Meine GUI habe ich mir mit dem FD bereits erstellt, allerdings stehe ich hier ovr ein paar Problemen:

    1. Buttons erstellen

    Ja, klingt für viele primitiv, allerdings habe ich kein Tutorial zum Button erstellen gefunden. Und selber begreif ich das nicht, das mit dem Switch und $nMsg und weis der kuckuck ... kann mir das mal jemand so erklären das ich es auch verstehe? :huh:

    2. .ini Datei anlegen.

    Ich will das ganze natürlich nicht jedesmal wieder eingeben, sondern in einer .ini Datei speichern. Ich hab den Code dazu schon erstellt, hoffe auch das der so richtig ist:

    Spoiler anzeigen


    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("KevKevs Notenrechner", 324, 358, 342, 186)
    $Englischlabel = GUICtrlCreateLabel("Englisch", 32, 40, 68, 17)
    $Deutschlabel = GUICtrlCreateLabel("Deutsch", 32, 80, 68, 17)
    $ReWelabel = GUICtrlCreateLabel("ReWe", 32, 120, 59, 17)
    $BWLlabel = GUICtrlCreateLabel("BWL", 32, 160, 60, 17)
    $Uefalabel = GUICtrlCreateLabel("Uefa", 32, 200, 59, 17)
    $Sozilabel = GUICtrlCreateLabel("Sozi", 192, 40, 40, 17)
    $PAlabel = GUICtrlCreateLabel("PA", 192, 80, 42, 17)
    $Sportlabel = GUICtrlCreateLabel("Sport", 192, 120, 37, 17)
    $Relilabel = GUICtrlCreateLabel("Reli", 192, 160, 38, 17)
    $DVlabel = GUICtrlCreateLabel("DV", 192, 200, 35, 17)
    $VWLlabel = GUICtrlCreateLabel("VWL", 32, 240, 60, 17)
    $TVlabel = GUICtrlCreateLabel("TV", 192, 240, 34, 17)
    $Englisch = GUICtrlCreateInput("", 120, 40, 41, 21)
    $Deutsch = GUICtrlCreateInput("", 120, 80, 41, 21)
    $ReWe = GUICtrlCreateInput("", 120, 120, 41, 21)
    $BWL = GUICtrlCreateInput("", 120, 160, 41, 21)
    $Uefa = GUICtrlCreateInput("", 120, 200, 41, 21)
    $VWL = GUICtrlCreateInput("", 120, 240, 41, 21)
    $Sozi = GUICtrlCreateInput("", 248, 40, 41, 21)
    $PA = GUICtrlCreateInput("", 248, 80, 41, 21)
    $Sport = GUICtrlCreateInput("", 248, 120, 41, 21)
    $Reli = GUICtrlCreateInput("", 248, 160, 41, 21)
    $DV = GUICtrlCreateInput("", 248, 200, 41, 21)
    $TV = GUICtrlCreateInput("", 248, 240, 41, 21)
    $Notendurschnitt = GUICtrlCreateButton("Notendurschnitt", 32, 280, 89, 33)
    $Speichern = GUICtrlCreateButton("Speichern", 136, 280, 65, 33)
    $Einlesen = GUICtrlCreateButton("Einlesen", 216, 280, 73, 33, 0)
    $Copyright = GUICtrlCreateLabel("Copyright", 200, 336, 48, 17)
    $Kevin = GUICtrlCreateLabel("Kevin", 248, 336, 31, 17)
    $Soldner = GUICtrlCreateLabel("Soldner", 280, 336, 40, 17)
    GUICtrlCreateLabel("", 224, 288, 4, 4)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    EndSwitch
    WEnd


    IniWrite ( "Noten.ini", "Noten", "Englisch", $Englisch)
    IniWrite ( "Noten.ini", "Noten", "Deutsch", $Deutsch)
    IniWrite ( "Noten.ini", "Noten", "ReWe", $ReWe)
    IniWrite ( "Noten.ini", "Noten", "BWL", $BWL)
    IniWrite ( "Noten.ini", "Noten", "Uefa", $Uefa)
    IniWrite ( "Noten.ini", "Noten", "VWL", $VWL)
    IniWrite ( "Noten.ini", "Noten", "Sozi", $Sozi)
    IniWrite ( "Noten.ini", "Noten", "PA", $PA)
    IniWrite ( "Noten.ini", "Noten", "Sport", $Sport)
    IniWrite ( "Noten.ini", "Noten", "Reli", $Reli)
    IniWrite ( "Noten.ini", "Noten", "DV", $Mathe)
    IniWrite ( "Noten.ini", "Noten", "TV", $TV )

    Allerdings will ich, dass, wenn ich auf "Speichern" klicke, die Noten in die .ini Datei geschrieben werden - meine Frage ist jetzt nur wie ich das mache? (Dazu wäre wahrscheinlich auch das Wissen, wie man Buttons erstellt, notwendig. :D) Später will ich noch die Einlesefunktion einbauen, aber erstmal das Speichern. :D

    Problem 3: Ausgabefeld

    Hat jetzt nichts mit diesem Skript zu tun - ich suche im FD ein Feld, das mir Werte ausgibt, ähnlich wie bei einem Taschenrechner oben das Feld. Kann mir bitte jemand sagen wie das heist, i-wie finde ich es nämlihc nicht ... :/

    Bin mir sicher das da noch mehr Probleme auftreten werden ... aber ich wäre froh wenn ihr mir bei diesen kleinen Problemen helfen könntet. :)

    Einmal editiert, zuletzt von Destiny of Faith (12. Juli 2011 um 14:29) aus folgendem Grund: Problem solved ^.^

  • Erstmal allgemein: Zu Anfang alle Variablen Deklarieren
    Schau dir mal zu folgenden die Hilfe an

    [autoit]

    Global $asdf
    Local $asdf
    Dim $asdf

    [/autoit]

    Zu 1.: einfach drauf klicken da steht alles dazu, aber du hast doch schon welche erstellt das passt doch

    [autoit]

    GUICtrlCreateButton

    [/autoit]

    um das ganze zu speichern musst du die inputs auslesen:

    [autoit]

    GUICtrlRead

    [/autoit]

    und um bei Button Klick was auszuführen dann so:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Speichern ; entspricht dem Klick auf den Button: Speichern = GUICtrlCreateButton("Speichern", 136, 280, 65, 33)
    ;~ do something; zb:
    _save()
    EndSwitch
    WEnd

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

    Func _save()
    IniWrite("Noten.ini", "Noten", "Englisch", $Englisch)
    IniWrite("Noten.ini", "Noten", "Deutsch", $Deutsch)
    IniWrite("Noten.ini", "Noten", "ReWe", $ReWe)
    IniWrite("Noten.ini", "Noten", "BWL", $BWL)
    IniWrite("Noten.ini", "Noten", "Uefa", $Uefa)
    IniWrite("Noten.ini", "Noten", "VWL", $VWL)
    IniWrite("Noten.ini", "Noten", "Sozi", $Sozi)
    IniWrite("Noten.ini", "Noten", "PA", $PA)
    IniWrite("Noten.ini", "Noten", "Sport", $Sport)
    IniWrite("Noten.ini", "Noten", "Reli", $Reli)
    IniWrite("Noten.ini", "Noten", "DV", $Mathe)
    IniWrite("Noten.ini", "Noten", "TV", $TV)
    EndFunc

    [/autoit]

    Um das ganze anzuzeigen eben entweder auch ein Label oder ein deaktiviertes Inputfeld. Hier sind alle möglichen styles die du beim erstellen eines Controls angeben kannst:
    http://www.autoitscript.com/autoit3/docs/a…x/GUIStyles.htm

    Anpassen kannst du die daten von Labels oder Inputs mit

    [autoit]

    GuiCtrlSetData

    [/autoit]


    Im allgemeinen solltest du dir erstmal ein paar Anfänger Tutorials zu AutoIt durchlesen, gibts hier im Forum oder einfach googlen und niemals die Hilfe von AutoIt vergessen bzw die ganzen Example Files da wird einem eigentlich (fast) alles erklärt.

    Einmal editiert, zuletzt von Milla (12. Juli 2011 um 15:34)

  • Ich hab mal eine kleine Hilfestellung gegeben:

    Spoiler anzeigen
    [autoit]

    #include

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

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("KevKevs Notenrechner", 324, 358, 342, 186)
    $Englischlabel = GUICtrlCreateLabel("Englisch", 32, 40, 68, 17)
    $Deutschlabel = GUICtrlCreateLabel("Deutsch", 32, 80, 68, 17)
    $ReWelabel = GUICtrlCreateLabel("ReWe", 32, 120, 59, 17)
    $BWLlabel = GUICtrlCreateLabel("BWL", 32, 160, 60, 17)
    $Uefalabel = GUICtrlCreateLabel("Uefa", 32, 200, 59, 17)
    $Sozilabel = GUICtrlCreateLabel("Sozi", 192, 40, 40, 17)
    $PAlabel = GUICtrlCreateLabel("PA", 192, 80, 42, 17)
    $Sportlabel = GUICtrlCreateLabel("Sport", 192, 120, 37, 17)
    $Relilabel = GUICtrlCreateLabel("Reli", 192, 160, 38, 17)
    $DVlabel = GUICtrlCreateLabel("DV", 192, 200, 35, 17)
    $VWLlabel = GUICtrlCreateLabel("VWL", 32, 240, 60, 17)
    $TVlabel = GUICtrlCreateLabel("TV", 192, 240, 34, 17)
    $iEnglisch = GUICtrlCreateInput("", 120, 40, 41, 21)
    $iDeutsch = GUICtrlCreateInput("", 120, 80, 41, 21)
    $iReWe = GUICtrlCreateInput("", 120, 120, 41, 21)
    $iBWL = GUICtrlCreateInput("", 120, 160, 41, 21)
    $iUefa = GUICtrlCreateInput("", 120, 200, 41, 21)
    $iVWL = GUICtrlCreateInput("", 120, 240, 41, 21)
    $iSozi = GUICtrlCreateInput("", 248, 40, 41, 21)
    $iPA = GUICtrlCreateInput("", 248, 80, 41, 21)
    $iSport = GUICtrlCreateInput("", 248, 120, 41, 21)
    $iReli = GUICtrlCreateInput("", 248, 160, 41, 21)
    $iDV = GUICtrlCreateInput("", 248, 200, 41, 21)
    $iTV = GUICtrlCreateInput("", 248, 240, 41, 21)
    $ND = GUICtrlCreateButton("Notendurschnitt", 32, 280, 89, 33)
    $Speichern = GUICtrlCreateButton("Speichern", 136, 280, 65, 33)
    $Copyright = GUICtrlCreateLabel("Copyright", 200, 336, 48, 17)
    $Kevin = GUICtrlCreateLabel("Kevin", 248, 336, 31, 17)
    $Soldner = GUICtrlCreateLabel("Soldner", 280, 336, 40, 17)
    GUICtrlCreateLabel("", 224, 288, 4, 4)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Speichern ;Einlesen der Noten zur Speicherdatei(Noten.ini)
    Global $BWL = GUICtrlRead($iBWL) ;Global, um die Variabeln im gesamten Script anerkennen zu lassen und nicht nur in der Funktion "Case $Speichern"
    Global $Mathe = GUICtrlRead($iDV)
    Global $PA = GUICtrlRead($iPA)
    Global $Reli = GUICtrlRead($iReli)
    Global $ReWe = GUICtrlRead($iReWe)
    Global $Sozi = GUICtrlRead($iSozi)
    Global $Sport = GUICtrlRead($iSport)
    Global $TV = GUICtrlRead($iTV)
    Global $Uefa = GUICtrlRead($iUefa)
    Global $VWL = GUICtrlRead($iVWL)
    Global $Deutsch = GUICtrlRead($iDeutsch)
    Global $Englisch = GUICtrlRead($iEnglisch)
    _save()

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

    Case $ND ;um den Durchschnitt zu berechnen
    $Erg = (GUICtrlRead($iBWL) + GUICtrlRead($iDV) + GUICtrlRead($iPA) + GUICtrlRead($iReli) + GUICtrlRead($iReWe) + GUICtrlRead($iSozi) + GUICtrlRead($iSport) + GUICtrlRead($iTV) + GUICtrlRead($iUefa) + GUICtrlRead($iVWL) + GUICtrlRead($iDeutsch) + GUICtrlRead($iEnglisch)) / 12
    GUICtrlCreateLabel($Erg, 216, 280, 73, 33, 0)
    GUICtrlSetFont(-1,15);Für die Labelgröße(hier 15)

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

    ;Fals mal eine 7 oder höher getippt werden sollte und man diese übersieht
    If GUICtrlRead($iBWL) Or GUICtrlRead($iDV) Or GUICtrlRead($iPA) Or GUICtrlRead($iReli) Or GUICtrlRead($iReWe) Or GUICtrlRead($iSozi) Or GUICtrlRead($iSport) Or GUICtrlRead($iTV) Or GUICtrlRead($iUefa) Or GUICtrlRead($iVWL) Or GUICtrlRead($iDeutsch) Or GUICtrlRead($iEnglisch) >= 7 Then
    MsgBox(16,"Error","Die Noten dürfen nur max. eine 6 betragen, da es in Deutschland keine 7 und höher gibt!")
    EndIf

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

    EndSwitch
    WEnd

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

    ;Die Werte, welche in die .ini-Datei eingetragen werden sollen
    Func _save()
    IniWrite("Noten.ini", "Noten", "Englisch", $Englisch)
    IniWrite("Noten.ini", "Noten", "Deutsch", $Deutsch)
    IniWrite("Noten.ini", "Noten", "ReWe", $ReWe)
    IniWrite("Noten.ini", "Noten", "BWL", $BWL)
    IniWrite("Noten.ini", "Noten", "Uefa", $Uefa)
    IniWrite("Noten.ini", "Noten", "VWL", $VWL)
    IniWrite("Noten.ini", "Noten", "Sozi", $Sozi)
    IniWrite("Noten.ini", "Noten", "PA", $PA)
    IniWrite("Noten.ini", "Noten", "Sport", $Sport)
    IniWrite("Noten.ini", "Noten", "Reli", $Reli)
    IniWrite("Noten.ini", "Noten", "DV", $Mathe)
    IniWrite("Noten.ini", "Noten", "TV", $TV)
    EndFunc

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

    #cs
    Falls man den Durchschnitt extern auslesen will, muss man nur statt GUICtrlCreateLabel($Erg, 216, 280, 73, 33, 0) eine MsgBox erstellem
    (Beispiel: MsgBox(64,"Dein Durchschnitt","Dein Durchschnitt beträgt $Erg")
    #ce

    [/autoit]

    Fall es nicht gutgenug auskommentiert ist, tut es mir Leid.
    Wenn noch Fragen sind, bitte melden :)

    /edit: Ich leg dir mal diese Videos ans Herz, manche sind sehr Hilfreich(sie sind aber nicht von mir!)
    http://www.youtube.com/user/blog4itde

    3 Mal editiert, zuletzt von Tutendorf (12. Juli 2011 um 03:08)

  • Das hier ist auch sehr informativ/hilfreich: [ gelöst ] Buch

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • @Milla

    Zitat

    und um bei Button Klick was auszuführen dann so:

    Genau das hab ich gesucht. :D Wie man etwas erstellt weis ich, aber wie man ihnen Funktionen zuordnet weis/wusste ich nicht.

    @ Tutendorf

    Vielen vielen Dank. :D Hab mein eigenes Skript jetzt so an deins angepasst das es tadellos funktioniert. ;) Nur beim Error gibt er mir immer nen Error aus, er zeigt mir zwar den Notendurschnitt an, aber auch immer die Errormessage, ich glaube er rechnet die Noten zusammen und dann checkt er ob es 7 oder höher ist ... könntest du da vlt. nochmal nen Blick draufwerfen, ich weis leider nicht wie man das korrigiert. ?(

    @ Dietmar

    Ich habs mir grad runtergeladen und werde mich mal durchwälzen. :)

    Ganz großes Danke an alle die mir geholfen haben, mein erstes (vernünftiges) Skript läuft jetzt wie geschmiert. :thumbup:

    Einmal editiert, zuletzt von Destiny of Faith (12. Juli 2011 um 14:28)

  • Er meinte seine Zeile Nr. 64 vermutlich eher so^^:

    [autoit]

    If GUICtrlRead($iBWL) >= 7 Or GUICtrlRead($iDV) >= 7 Or GUICtrlRead($iPA) >= 7 Or GUICtrlRead($iReli) >= 7 Or GUICtrlRead($iReWe) >= 7 Or GUICtrlRead($iSozi) >= 7 Or GUICtrlRead($iSport) >= 7 Or GUICtrlRead($iTV) >= 7 Or GUICtrlRead($iUefa) >= 7 Or GUICtrlRead($iVWL) >= 7 Or GUICtrlRead($iDeutsch) >= 7 Or GUICtrlRead($iEnglisch) >= 7 Then

    [/autoit]

    Wenn das Thema für dich gelöst ist dann setzt doch bitte auch den Status auf gelöst
    (Einfach ersten Post bearbeiten, Präfix gelöst wählen und Absenden ;) )

  • Er meinte seine Zeile Nr. 64 vermutlich eher so^^:

    [autoit]

    If GUICtrlRead($iBWL) >= 7 Or GUICtrlRead($iDV) >= 7 Or GUICtrlRead($iPA) >= 7 Or GUICtrlRead($iReli) >= 7 Or GUICtrlRead($iReWe) >= 7 Or GUICtrlRead($iSozi) >= 7 Or GUICtrlRead($iSport) >= 7 Or GUICtrlRead($iTV) >= 7 Or GUICtrlRead($iUefa) >= 7 Or GUICtrlRead($iVWL) >= 7 Or GUICtrlRead($iDeutsch) >= 7 Or GUICtrlRead($iEnglisch) >= 7 Then

    [/autoit]

    Wenn das Thema für dich gelöst ist dann setzt doch bitte auch den Status auf gelöst
    (Einfach ersten Post bearbeiten, Präfix gelöst wählen und Absenden ;) )

    Danke dir. :D Habs auf gelöst gesetzt.^^