Fehler im Script gesucht^^

04/08/2010 20:21 chillmastor#1
hey
hab vor ein paar minuten mir die Grundlagen des Auto IT scripten durchgelesen
und wollte als letzt "Prüfung"^^ ein Script schreiben.
Ein kleines Spiel sozusagen
Man bekommt vom Script Binär Fragen gestellt und so soll eine Zahl zwischen
1 und 30 erraten werden.

Der script läuft auch eigentlich ganz gut, nur bekomme ich jetzt immer einen error
Hier ist der Script und der Error ist im Anhang

Code:
 $a1=InputBox("","Denke dir eine Zahl zwischen 1 und 30...Ist die Zahl gerade? Nur Ja oder Nein")
If     $a1="Ja" Then
    $b1=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Elseif $a1="Nein" Then 
    $b2=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Else 
	MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf
If     $b1="Ja" Then
	$c1=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif $b1="Nein" Then
	$c2=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else
	MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf
04/08/2010 21:06 Mark-#2
ich glaube das geht nich weil du kannst nich 2 variablen mit dem gleichem input deklarieren
04/08/2010 21:07 $eRiaL#3
Jop das habe ich auch grad gedacht^^
04/08/2010 21:15 Mark-#4
das kannst du ganz easy heraus finden mach mal
"If $b1="Ja2" Then"
und der error dann bei line 11 kommt dann kannst du nich 2 variablen gleich deklarieren
04/08/2010 21:18 chillmastor#5
danke für die antworten werds mal testen
04/08/2010 21:30 Cholik#6
#moved
04/08/2010 22:22 Shadow992#7
Quote:
Originally Posted by chillmastor View Post
hey
hab vor ein paar minuten mir die Grundlagen des Auto IT scripten durchgelesen
und wollte als letzt "Prüfung"^^ ein Script schreiben.
Ein kleines Spiel sozusagen
Man bekommt vom Script Binär Fragen gestellt und so soll eine Zahl zwischen
1 und 30 erraten werden.

Der script läuft auch eigentlich ganz gut, nur bekomme ich jetzt immer einen error
Hier ist der Script und der Error ist im Anhang

Code:
 $a1=InputBox("","Denke dir eine Zahl zwischen 1 und 30...Ist die Zahl gerade? Nur Ja oder Nein")
If     $a1="Ja" Then
    $b1=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Elseif $a1="Nein" Then 
    $b2=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Else 
	MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf
If     $b1="Ja" Then
	$c1=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif $b1="Nein" Then
	$c2=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else
	MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf
Logisch dass es nicht geht , ich zeige dir mal einen möglichen Weg durch dein Skript :

Code:
$a1="Nein" ;user hat Nein gewählt
If $a1= ...
$b2="Ja" ;User hat Ja gewählt
If $b1 = ... ; Huch $b1 wurde doch garnicht deklariert ? , da es diese Variable für AutoIt nicht gibt , kann er auch keinen If Block , der die Variable als Bedingung enthält , ausführen .
Beheben könntest du dein problem so :
PHP Code:
$b1="N"
$b2="N"
If     $a1="Ja" Then
    $b1
=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Elseif 
$a1="Nein" Then 
    $b2
=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Else 
    
MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf

if  
$b1<>"N" then
If     $b1="Ja" Then
    $c1
=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif 
$b1="Nein" Then
    $c2
=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else

    
MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
endif
EndIf
if  
$b2<>"N" then
If     $b2="Ja" Then
    $c3
=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif 
$b2="Nein" Then
    $c4
=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else
    
MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
endif
endif 
Btw. Falls du die grundlagen durchhast , gibt es noch ein Weiterführendes Tutorial : [Only registered and activated users can see links. Click Here To Register...]
04/08/2010 22:26 Mark-#8
ich sehe da jetzt keinen unterschied abgesehen davon das da je ein tab weniger is?
04/08/2010 23:00 chillmastor#9
okay erstmal danke für den link zum weiterführenden tut, doch das schau ich
mir jetzt schon ca. 1,5 h an und checks einfach nicht xD
mein hirn hat zur zeit einfach ein aufnahmestopp

nun zu diesem
Quote:
$b1="N"
$b2="N"
If $a1="Ja" Then
$b1=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Elseif $a1="Nein" Then
$b2=InputBox("","Ist die Zahl unter 15? Wieder nur Ja oder Nein")
Else
MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
EndIf

if $b1<>"N" then
If $b1="Ja" Then
$c1=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif $b1="Nein" Then
$c2=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else

MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
endif
EndIf
if $b2<>"N" then
If $b2="Ja" Then
$c3=InputBox("","Ist deine Zahl 1-Stellig? Wie immer nur Ja oder Nein")
Elseif $b2="Nein" Then
$c4=InputBox("","Beginnt die Zahl mit der Ziffer 1? Auch hier nur Ja oder Nein")
Else
MsgBox(0,"DUMM","BIST DU DOOF ODER SO? WAS HAST DU AN JA ODER NEIN NICHT VERSTANDEN??")
endif
endif
Ich versteh hier so manche sachen nicht ...
Vielleicht könntest du mir diese stellen etwas erklären:
Quote:
$b1="N"
$b2="N"
1.was bedeuten diese Variablen?
Quote:
if $b1<>"N" then
If $b1="Ja" Then
2.was bedeuten diese <> dinger??
Zusatz:Wie kann man denn bitte 2 If Blöcke hintereinander machen?
ich dachte dazu muss man immer erst die Else IF und den Else Zeile hunzufügen

und die 3. aber eher unwichtige frage xD
wie bekommst du es hin den Script in Farbe zu kopieren?
Bei mir wird der immer Schwarz-Weiß -.-
04/08/2010 23:09 Mark-#10
script in farbe indem du [php] - Inhalt - [/php]
04/09/2010 10:37 Shadow992#11
Quote:
Originally Posted by chillmastor View Post
okay erstmal danke für den link zum weiterführenden tut, doch das schau ich
mir jetzt schon ca. 1,5 h an und checks einfach nicht xD
mein hirn hat zur zeit einfach ein aufnahmestopp

nun zu diesem
Ich versteh hier so manche sachen nicht ...
Vielleicht könntest du mir diese stellen etwas erklären:

1.was bedeuten diese Variablen?

2.was bedeuten diese <> dinger??
Zusatz:Wie kann man denn bitte 2 If Blöcke hintereinander machen?
ich dachte dazu muss man immer erst die Else IF und den Else Zeile hunzufügen

und die 3. aber eher unwichtige frage xD
wie bekommst du es hin den Script in Farbe zu kopieren?
Bei mir wird der immer Schwarz-Weiß -.-
Den Variablen wird einfach der Wert "N" zugewiesen , dadurch sind die Variablen erstellt(deklariert) worden und AutoIt gibt schonmal keinen Fehler mehr aus . Das "N" habe ich nur genommen , weil ich einfach das N nehmen wollte , du hättest auch genauso gut "Hallo wie gehts euch" nehmen können oder 1283649539 oder "=)/Ugjseserkxgoir" , das N hat also keine besondere Bedeutung .

Zu 2. Diese Dinger bedeuten ungleich (wenn man ein bisschen logisch denkt , lässt sich auch ein Zusammenhang finden zu ungleich un <> , kleine Erklärung : wenn ich $variable <> 1 habe , dann muss die Variable ja entweder größer oder eben kleiner , also kann jede beliebige Zahl genommen werden auser 1 eben .)
Zu deiner If-Frage , du kannst soviele Ifs verschachteln , wie du willst nur musst du für jedes if auch ein then und ein endif schreiben , kleines Beispiel :
PHP Code:
$variable=20
$variable2
=30
if 1=1 then
   
if 2=2 then
      
if $variable=20 then
          
if $variable=$variable2-10
               Msgbox
(0,"Hallo","Hi")
          endif
      endif
   endif
endif 
Hier sind die Ifs zwar vollkommen überflüssig , aber man sollte sehen können , dass mehrere Ifs kombinierbar sind .
Auch soetwas ist möglich :
PHP Code:
If 1<>1 then

else
   if 
2=2 then

   
elseif 2<>2 then
      
if 3=3 then

      
endif
   endif
endif 
Das kann man ewig so weiterführen ...

Wo ist dein verständniss Problem im Tutorial ?
Vielleicht haben andere auch damit zu kämpfen , dann kann ich versuchen es etwas besser zu erklären ...
04/09/2010 12:42 chillmastor#12
okay danke das du mir das nochmal erklärt hast
hab ich jetzt vertanden soweit

bei dem weiterführenden tut versteh ich auch alles so weit bis wir zum AdlibUnregister(adlibdisable) kommen also dieser teil
Quote:
Kapitel VI : AdlibEnable , AdlibDisable
Teil 2 : AdlibDisable

Aufbau von AdlibDisable :
(In der neusten Version heißt der Befehl AdlibUnRegister , die Werte zwischen den Klammern sind aber die selben wie beschrieben)
PHP-Code:
AdlibDisable()
Beispiel Code :
PHP-Code:
AdlibEnable("Test",4000)
For $i = 0 To 10 Step 1
sleep(1000)
Next
AdlibDisable()
MsgBox(0,"Hallo","Wir sind an der While Schleife angelangt")
While 1
sleep(200)
WEnd
Func Test()
MsgBox(0,"Hallo","Schon wieder sind 4 Sekunden rum")
EndFunc
AdlibDisable() , beendet alle momentan laufenden AdlibEnables .
Die While Schleife wurde nur eingebaut , damit man sieht , dass die Funktion
Test() nicht weiter ausgeführt wird .
EDIT: OH MAn bin ich doof jetzt wo ichs nochmal lese wird mir alles klar xD
ich hab mich immer gefragt warum der nur 2 mal die meldung 4 sekunden um gibt und dann nach 2 sekunden die while schleife anfängt

jetzt sehe ich aber das paralell zu diesem alle 4000ms die func test ausführen noch das zählen läuft
von $i und die hat sleep auf 1000ms

d.h. der führ die funktion test aus bis die $i bei 10 ist und somit 10 sekunden
ist doch richtig so oder??
04/09/2010 17:03 Shadow992#13
Quote:
Originally Posted by chillmastor View Post
EDIT: OH MAn bin ich doof jetzt wo ichs nochmal lese wird mir alles klar xD
ich hab mich immer gefragt warum der nur 2 mal die meldung 4 sekunden um gibt und dann nach 2 sekunden die while schleife anfängt

jetzt sehe ich aber das paralell zu diesem alle 4000ms die func test ausführen noch das zählen läuft
von $i und die hat sleep auf 1000ms

d.h. der führ die funktion test aus bis die $i bei 10 ist und somit 10 sekunden
ist doch richtig so oder??
Genau so ist es ;)
Du hast ins schwarze getroffen .