Problem mit @error Befehl

10/18/2012 22:48 Klugscheißer#1
Hi ich habe mich an ein Mini-Projekt gesetzt (für mich halt nicht so mini, weil ich gerade mit AutoIt beginne) und wollte mir ein kleines Spiel programmieren. Es wird eine Zufallszahl generiert und man muss anhand der Hinweise größer bzw. kleiner die zufällige Zahl zwischen 1 und 100 rausfinden. Das funktiert auch soweit ganz gut. Das Problem ist nur, wenn ich auf Cancel drücke soll er das Programm beenden. Stattdessen nimmt er den Wert, der in der inputbox steht (also null) und meint meine Zahl sei zu klein. Jetzt wollte ich mal fragen, wie man dem Pc verklickern kann, was er tun soll, wenn auf Cancel gedrückt wird.
Ich pack hier mal meinen Code mit rein, da er erstens ja nicht groß ist und zweitens kann man daran ja erkennen, wie ich das nach einigen Anweisungen im Netz verstanden habe.
PHP Code:
$Z random(0,100,1)
for 
$i 1 to 10 step +1
$Tipp 
InputBox('Zahlenraten','Errate die geheime Zahl.')
if 
$Tipp $Z Then
    MsgBox
(64,'Glückwunsch!','Glückwunsch Du hast die gesuchte Zahl gefunden!')
    
ProcessClose('Zahlenraten.exe')
ElseIf 
$Tipp $Z Then
    MsgBox
(0,'Zu klein','Dein Tipp war zu klein. Probiere bitte eine größere Zahl. Es verbleiben '10 $i &' Versuche',3)
ElseIf     
$Tipp $Z Then
    MsgBox
(0,'Zu groß','Dein Tipp war zu groß. Probiere bitte eine kleinere Zahl. Es verbleiben '10 $i &' Versuche',3)
ElseIf @
error 1 Then
    ProcessClose
('Zahlenraten.exe')
Else
EndIf
Next
ProcessClose
('Zahlenraten.exe'
Würde mich über hilfreiche Antworten freuen :)
10/19/2012 11:22 isaias#2
downloade dir scite4autoit und drück dann bei scite alt+m dann öffnet sich der koda formdesigner. mit dem kannst du dann eine msgbox machen wo die knöpfe als variable gespeichert sind und somit gut schließbar sind. wenn das geholfen hat einfach da unten den thx knopf geben.
10/19/2012 17:37 Klugscheißer#3
Hast erstmal ein Thx. Trotzdem würde ich ungern mit Koda Designer arbeiten, da es mir einfach erstmal darum geht, wie man dieses Problem mit @error lösen kann bzw ob das überhaupt möglich ist. Wie gesagt trotzdem danke :)
10/19/2012 17:38 BladeTiger12#4
Kann dir gerne helfen Skype Name:
MrBladeTiger12
10/24/2012 10:49 isaias#5
Quote:
Originally Posted by Klugscheißer View Post
Hast erstmal ein Thx. Trotzdem würde ich ungern mit Koda Designer arbeiten, da es mir einfach erstmal darum geht, wie man dieses Problem mit @error lösen kann bzw ob das überhaupt möglich ist. Wie gesagt trotzdem danke :)
koda form designer erledigt alles mit den variablen. das bedeutet: kein fehler! jetzt downloade dir das und dann sind wir alle glücklich!
10/24/2012 18:01 Achat#6
Quote:
Originally Posted by Klugscheißer View Post
Es wird eine Zufallszahl generiert und man muss anhand der Hinweise größer bzw. kleiner die zufällige Zahl zwischen 1 und 100 rausfinden. Das funktiert auch soweit ganz gut. Das Problem ist nur, wenn ich auf Cancel drücke soll er das Programm beenden. Stattdessen nimmt er den Wert, der in der inputbox steht (also null) und meint meine Zahl sei zu klein. J
Quote:
Originally Posted by isaias View Post
koda form designer erledigt alles mit den variablen. das bedeutet: kein fehler! jetzt downloade dir das und dann sind wir alle glücklich!

Du empfiehlst also einem Anfänger, gleich am Anfang mal einen Code von KODA generieren zu lassen, den er dann sowieso nicht versteht?:facepalm:

Quote:
Originally Posted by Klugscheißer View Post
Trotzdem würde ich ungern mit Koda Designer arbeiten, da es mir einfach erstmal darum geht, wie man dieses Problem mit @error lösen kann bzw ob das überhaupt möglich ist.
:rtfm: (Cursor über Befehl, Linksklick und dann F1 drücken) und Tutorials lesen: [Only registered and activated users can see links. Click Here To Register...]
Kann ich nur empfehlen, das mal durchzulesen.

Code:
Success: Returns the string that was entered. 
Failure: Returns "" (blank string) and sets @error as follows: 
@Error 0 = The string returned is valid. 
 1 = The Cancel button was pushed. 
 2 = The Timeout time was reached. 
 3 = The InputBox failed to open. This is usually caused by bad arguments. 
 4 = The InputBox cannot be displayed on any monitor. 
 5 = Invalid parameters width without height or left without top.
Bedeutet also wir bekommen einen String, wenn der Benutzer etwas eingibt. Wenn er die InputBox wegklickt etc. Dann wird in @error eine Zahl größer 0 gespeichert. Wie findet man nun heraus, ob es Probleme gab?

Ganz einfach
Code:
If @error then exit
Unter die InputBox. @Error enthält immer den error Wert, die die zuletzt aufgerufene Funktion dort gespeichert hat.

Quote:
If <expression> Then statement
Wenn der Ausdruck wahr ist, dann wird der Befehl ausgeführt. Also wenn @error 0 ist, dann ist expression false - wird nicht ausgeführt. Wenn InputBo aber ein @error größer 0 setzt, dann ist der Ausdruck wahr und somit wird dann der Befehl ausgeführt, in diesem Fall beendet sich das Programm.

Dazu noch das : [Only registered and activated users can see links. Click Here To Register...]

Code:
$iRandom = Random(0, 100, 1)

For $i = 1 To 10
	$iTipp = InputBox('Zahlenraten', 'Errate die geheime Zahl.')
	If @error Then Exit
	$iTipp = Int($iTipp) ;Wir wollen Zahlen vergleichen, InputBox gibt aber immmer einen String zurück. Also wandeln wir den String in eine Zahl um mit Int(), falls der String leer ist bekommen wir 0
	If $iTipp = $iRandom Then
		MsgBox(64, 'Glückwunsch!', 'Glückwunsch Du hast die gesuchte Zahl gefunden!')
		ExitLoop ; Raus aus der For-Schelife, wir brauchen ja keine neuen Versuche mehr, da die Zahl gefunden wurde
	ElseIf $iTipp < $iRandom Then
		MsgBox(0, 'Zu klein', 'Dein Tipp war zu klein. Probiere bitte eine größere Zahl. Es verbleiben ' & 10 - $i & ' Versuche', 3)
	ElseIf $iTipp > $iRandom Then
		MsgBox(0, 'Zu groß', 'Dein Tipp war zu groß. Probiere bitte eine kleinere Zahl. Es verbleiben ' & 10 - $i & ' Versuche', 3)
	EndIf
Next
;Process Close oder Exit ist hier nicht nötig, das Script schließt sich am Ende automatisch, falls es nicht mehr in einer Schleife o.ä. ist.
PS: Ich helfe auch gerne über skype.

MfG