AutoIt-GUIDE: Wie programmiere ich einen kleinen Taschenrechner?

05/14/2011 11:20 Skater21459#1
Herzlich Willkommen zu meinem ersten Guide.
Da ich gerade nichts zu tun habe, werde ich hier auf einfache Art und Weise erklären, wie man einen Taschenrechner programmiert. Natürlich mit AutoIt.
[Auf Grundlagen werde ich nicht besonders eingehen!]

Zum Anfang brauchen wir den Koda Form Designer (kurz: Koda):
Die könnt ihr euch hier legal Downloaden: [Only registered and activated users can see links. Click Here To Register...]

Wir öffnen Koda. Oben seht ihr die verschiedenen Steuerelemente. Ihr erstellt Buttons und ein Label. Etwa so wie ich hier:

[Only registered and activated users can see links. Click Here To Register...]

Wenn ihr fertig seit und es euch gefällt könnt ihr F9 drücken. Darauf öffnet sich ein neues Fenster. Dort drückt ihr "Copy to clipboard".

Danach öffnet ihr SciTe (Script Editor)Hier downloadbar: [Only registered and activated users can see links. Click Here To Register...]

Sobald es geöffnet ist, kopiert ihr mit Ctrl+V die Buttons und das Label in den Editor.

[Only registered and activated users can see links. Click Here To Register...]

Nun fügen wir den Buttons die entsprechenden Befehle zu.

Wir haben bis jetzt folgenden Code:
PHP Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Taschenrechner"289319189121)
$Label1 GUICtrlCreateLabel(""242424428)
$Button1 GUICtrlCreateButton("1"327241410)
$Button2 GUICtrlCreateButton("2"967241410)
$Button3 GUICtrlCreateButton("3"1607241410)
$Button4 GUICtrlCreateButton("4"3213641410)
$Button5 GUICtrlCreateButton("5"9613641410)
$Button6 GUICtrlCreateButton("6"16013641410)
$Button7 GUICtrlCreateButton("7"3220041410)
$Button8 GUICtrlCreateButton("8"9620041410)
$Button9 GUICtrlCreateButton("9"16020041410)
$Button10 GUICtrlCreateButton("0"3226441410)
$Button11 GUICtrlCreateButton("+"2247241410)
$Button12 GUICtrlCreateButton("-"22413641410)
$Button13 GUICtrlCreateButton("*"22420041410)
$Button14 GUICtrlCreateButton("/"22426441410)
$Button15 GUICtrlCreateButton("="16026441410)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

    EndSwitch
WEnd 
Case $GUI_EVENT_CLOSE bedeutet, dass das Fenster beim Klicken des Kreuzes geschlossen wird.

Wir fügen nun die Buttons 0-9 ein. Das sieht dann so aus:

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
        
Case $Button2
        
Case $Button3
        
Case $Button4
        
Case $Button5
        
Case $Button6
        
Case $Button7
        
Case $Button8
        
Case $Button9
        
Case $Button10    
    
EndSwitch
WEnd 
Wie man sieht wurde den Buttons noch keine Befehle angegeben.
Der Befehl zu Button 1 sieht dann so aus:

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "1"

GUICtrlSetData($Label1) heisst:
Es verändert die Zeichen im Label1.

GUICtrlRead($Label1) heisst:
Es liest die Zeichen, welche im Label1 enthalten sind.

& "1" heisst:
Es wird eine 1 angesetzt.

Zusammengefasst heisst GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1"):
Es wird die Ziffer 1 im Label angezeigt.

Das wird nun mit allen Zahlen gemacht:

[Only registered and activated users can see links. Click Here To Register...]


Nun fehlen noch die verschiedenen Operatoren.
Wir fügen sie gleich wie die Zahlen ein:

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "1")
        Case 
$Button2
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "2")
        Case 
$Button3
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "3")
        Case 
$Button4
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "4")
        Case 
$Button5
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "5")
        Case 
$Button6
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "6")
        Case 
$Button7
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "7")
        Case 
$Button8
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "8")
        Case 
$Button9
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "9")
        Case 
$Button10    
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "0")
        Case 
$Button11
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "+")
        Case 
$Button12
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "-")
        Case 
$Button13
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "*")
        Case 
$Button14
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "/")
    EndSwitch
WEnd 
Nun fehlt nur noch das =-Zeichen. Dieses wird so eingefügt:

PHP Code:
Case $Button15
    GUICtrlSetData
($label1Execute(GUICtrlRead($label1))) 
Execute bedeutet:
Es werden die Ziffern im Label1 gelesen und ausgerechnet.

Da nach einem C-Button gefragt wurde (Ergebnis löschen) werde ich das kurz erklären.
Zuerst wird ein neuer Button erstellt.

[Only registered and activated users can see links. Click Here To Register...]

Der Befehl des Buttons lautet wie folgt:

PHP Code:
Case $Button16
    GUICtrlSetData
($Label1""
Das heisst, ins Label wird "nichts" geschrieben.

Ich füge nun Hotkeys ein:

Mit einem Hotkey können durch Tastenkombinationen verschiedene Funktionen aufgerufen werden.

Beispiel für ENTER:

PHP Code:
HotKeySet("{ENTER}""_gleich"
Das heisst, wenn ENTER gedürckt wird, wird die Funktion _gleich aufgerufen. Nun müssen wir die Funktion _gleich definieren.
Das sieht dann so aus:

PHP Code:
Func _gleich()
    
GUICtrlSetData($label1Execute(GUICtrlRead($label1)))
EndFunc 
Hier der Script in AutoIt:

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

Man könnte alles ein wenig zusammenfassen, damit es nicht so gross wird, doch dann ist es schwerer zu verstehen. Deshalb lasse ich es so.

Hier ist nun das gesammte Script:

PHP Code:
HotKeySet("{/}""_divi")
HotKeySet("{*}""_multi")
HotKeySet("{+}""_addi")
HotKeySet("{-}""_subt")
HotKeySet("{ENTER}""_gleich")
HotKeySet("{NUMPAD1}""_nummer1")
HotKeySet("{NUMPAD2}""_nummer2")
HotKeySet("{NUMPAD3}""_nummer3")
HotKeySet("{NUMPAD4}""_nummer4")
HotKeySet("{NUMPAD5}""_nummer5")
HotKeySet("{NUMPAD6}""_nummer6")
HotKeySet("{NUMPAD7}""_nummer7")
HotKeySet("{NUMPAD8}""_nummer8")
HotKeySet("{NUMPAD9}""_nummer9")
HotKeySet("{NUMPAD0}""_nummer0")
HotKeySet("{NUMPADMULT}""_multi")
HotKeySet("{NUMPADADD}""_addi")
HotKeySet("{NUMPADSUB}""_subt")
HotKeySet("{NUMPADDIV}""_divi")
HotKeySet("{NUMPADENTER}""_gleich")

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Taschenrechner"289319189121)
$Label1 GUICtrlCreateLabel(""242424428)
$Button1 GUICtrlCreateButton("1"327241410)
$Button2 GUICtrlCreateButton("2"967241410)
$Button3 GUICtrlCreateButton("3"1607241410)
$Button4 GUICtrlCreateButton("4"3213641410)
$Button5 GUICtrlCreateButton("5"9613641410)
$Button6 GUICtrlCreateButton("6"16013641410)
$Button7 GUICtrlCreateButton("7"3220041410)
$Button8 GUICtrlCreateButton("8"9620041410)
$Button9 GUICtrlCreateButton("9"16020041410)
$Button10 GUICtrlCreateButton("0"3226441410)
$Button11 GUICtrlCreateButton("+"2247241410)
$Button12 GUICtrlCreateButton("-"22413641410)
$Button13 GUICtrlCreateButton("*"22420041410)
$Button14 GUICtrlCreateButton("/"22426441410)
$Button15 GUICtrlCreateButton("="16026441410)
$Button16 GUICtrlCreateButton("C"9626441410)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "1")
        Case 
$Button2
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "2")
        Case 
$Button3
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "3")
        Case 
$Button4
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "4")
        Case 
$Button5
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "5")
        Case 
$Button6
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "6")
        Case 
$Button7
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "7")
        Case 
$Button8
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "8")
        Case 
$Button9
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "9")
        Case 
$Button10    
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "0")
        Case 
$Button11
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "+")
        Case 
$Button12
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "-")
        Case 
$Button13
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "*")
        Case 
$Button14
            GUICtrlSetData
($Label1GUICtrlRead($Label1) & "/")
        Case 
$Button15
            GUICtrlSetData
($label1Execute(GUICtrlRead($label1)))
        Case 
$Button16
            GUICtrlSetData
($Label1"")
    EndSwitch
WEnd

Func _nummer1
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "1")
EndFunc

Func _nummer2
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "2")
EndFunc

Func _nummer3
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "3")
EndFunc

Func _nummer4
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "4")
EndFunc

Func _nummer5
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "5")
EndFunc

Func _nummer6
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "6")
EndFunc

Func _nummer7
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "7")
EndFunc

Func _nummer8
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "8")
EndFunc

Func _nummer9
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "9")
EndFunc

Func _nummer0
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "0")
EndFunc

Func _divi
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "/")
EndFunc

Func _multi
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "*")
EndFunc

Func _addi
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "+")
EndFunc

Func _subt
()
    
GUICtrlSetData($Label1GUICtrlRead($Label1) & "-")
EndFunc

Func _gleich
()
    
GUICtrlSetData($label1Execute(GUICtrlRead($label1)))
EndFunc 
Man kann dem Taschenrechner natürlich noch viel mehr hinzufügen. Falls ihr es versteht könnt ihr auch noch versuchen die verschiedenen Funktionen aus dem Windows Rechner zu programmieren. Wie ihr wollt.
Ich wollte hier nur kurz zeigen, wie ein Anfänger schnell ein etwas nützliches Programm erstellen kann.
Falls jemand Fehler findet (inkl. Rechdschreibefeller) wäre es toll, wenn mir eine PM geschickt wird. Natürlich kann man auch hier im Thread posten. Ich werde es dann so schnell wie möglich ändern.

Ich wünsche euch einen schönen Abend und ein erholsames Wochenende!
*Skater21459*
05/14/2011 13:43 Furkan#2
Schönes Guide. Nur den gesamten Code am Ende könntest du entfernen für alle C&Pler
05/14/2011 14:17 omer36#3
Quote:
Originally Posted by Dave™ View Post
Schönes Guide. Nur den gesamten Code am Ende könntest du entfernen für alle C&Pler
das ist nur ein kleiner "taschenrechner" mit viel schnick schnack. wer den C&P machen will, lass ihn doch
05/15/2011 11:38 Skater21459#4
Danke für euer Feedback :)
05/17/2011 19:27 Skater21459#5
push und so
05/24/2011 12:53 Skater21459#6
nur so wenig replys ?-.-
05/24/2011 16:00 lolkop#7
was für replys erwartest du denn bei einem script wie diesem?

es ist ein extrem einfaches script, bei dem 95% der arbeit von koda erledigt wurden...

denke nicht das du da kommentare wie "wow, du hast mit diesem tutorial mein leben verändert" erwarten solltest
05/24/2011 16:02 hofo#8
Gutes Tutorial.. hat bestimmt eine menge Zeit gekostet, es zu schreiben ;D

#Thanks given!
05/24/2011 19:45 Skater21459#9
Quote:
Gutes Tutorial.. hat bestimmt eine menge Zeit gekostet, es zu schreiben ;D

#Thanks given!
^this
05/28/2011 22:56 noahrmal#10
Danke jetzt weiß ich wie man ein taschenrechner scriptet :)
05/29/2011 03:56 | Moep |#11
Wow, du hast mit diesem Tutorial mein Leben verändert...