AutoIt: Problem mit 'IF' - Es geht nicht weiter

Hallo!

Ich möchte ein kleines Fun-Programm erstellen.

Und zwar soll der PC mit dem Befehl „Beep“ Laute von sich geben.

Man soll eine Zahl eingeben können, die die Frequenz festlegt. (Es funktionieren 37 bis 32767 Hz.)

Liegt die Zahl dazwischen, ist gut, dann soll’s beepen.
Aber wenn die Zahl zu klein ist soll folgendes passieren:

  1. Fehlermeldung - „Zahl zu klein“
  2. Ja/Nein-Meldung - „Nochmal probieren?“
    3a. Bei Klick auf „Ja“ soll man die Zahl nochmal eingeben können, bzw. soll es bei der Eingabe der Zahl wieder losgehen.
    3b. Bei Klick auf „Nein“ soll’s einfach beendet werden.

Anders formuliert:
Wie es bei „IF“-True weitergeht ist mir klar.
Aber bei mir macht er den nächsten Schritt unter dem IF bzw. IFEND nicht (wenn die Bedingung nicht existiert ist).
Woran kann’s liegen?

… Bin für jeden Tipp dankbar. xXx Jan Martin xXx

Aber bei mir macht er den nächsten Schritt unter dem IF bzw.
IFEND nicht (wenn die Bedingung nicht existiert ist).

Hallo Jan Martin,

du hast da irgendwelchen Code für AutoIt entwickelt, der nicht klappt.

Wenn das so ist,
dann zeige ihn doch mal. Die Logik von If…End If Verzweigungen ist auch in anderen Programmiersprachen bekannt.
Und wenn ein Andrer der auch was füe AutoIt programmiert deinen Code sieht, so kann er dir besser helfen als ins Blaue hinein.

Gruß
Reinhard

Hallo mal wieder!

Erstmal Danke ein Reinhard für die schnelle Antwort. :wink:

Hier das, was ich bisher entworfen habe:

$freq = InputBox(„Dein PC piept wohl!“, „Gib hier die Frequenz ein! Achtung! Bereich: 37 bis 32767 Hz“)

If $freq

Ich bin’s nochmal^^

Also ich schreibe meine Frage einfach mal viel einfacher:

Wenn die Bedingung für „If“ zutrifft, funktioniert auch die Meldung dazu.
Aber wenn das nicht der Fall ist, geht es nach dem „If“-Satz einfach nicht weiter.

  • Aber wie macht man das, dass es weitergeht, obwohl die Bedingung nicht existiert?

Hilft mir! :wink:

mfG, Jan Martin

Hallo Jan Martin,

$freq = InputBox(„Dein PC piept wohl!“, „Gib hier die Frequenz
ein! Achtung! Bereich: 37 bis 32767 Hz“)

If $freq immer abgefragt, auch wenn sie gar nicht gesetzt wurde, weil die Frequenz >= 37 war. Sowas ist meistens tödlich, weil dann die Variable entweder irgendeinen undefinierten Wert hat, oder einen Standardwert oder den vorherigen. Du solltest deine Abfrage umdrehen, etwa so:

$freq = InputBox("Dein PC piept wohl!", "Gib hier die Frequenz ein! Achtung! Bereich: 37 bis 32767 Hz")
If $freq \> 36 Then
 Beep($freq, 500)
else
 MsgBox(16, "Fehler", "Frequenz zu niedrig!")
endif

ist jetzt nur so ungefähr, weil ich die Syntax von AutoIt nicht kenne, aber das Prinzip ist hoffentlich klar. Um das Ganze müsste dann noch eine Schleife kommen, die solange läuft, bis der User einen Button „Beenden“ oder so drückt.

Viele Grüße
Marvin

Hey
Sorry für die späte Antwort, eigentlich bin ich immer etwas schneller.^^

Also erstmal herzlichen Dank, dass du dich um meine „If-Frage“ gekümmert hast!

Aber jetzt möcht’ ich euch mitteilen, dass ich, nachdem ich die Frage stellte, rausgefunden habe, wie der If-Befehl zu beherrschen ist.

Das heißt: Ich hab’s kapiert, Thema kann geschlossen werden.

Hier aber trotzdem nochmal das, was ich jetzt entgültig geschrieben habe:

$anfang = MsgBox(1, „Beep“, „Du möchtest also Deinen PC zum piepen bringen?“)

If $anfang = 2 Then
MsgBox(0, „Beep“, „Schade, dass Du es doch nicht willst.“)
Exit
Else
EndIf

$var = InputBox(„Beep - Frequenz“, „Hier musst Du die Frequenz eingeben, die der Ton haben soll.“&@CRLF&„Du kannst zwischen 37 und 32767 eine beliebige wählen!“)

If $var = 0 Then
MsgBox(16, „Beep - Fehler“, „Du musst die Frequenz eingeben!“)
Exit
Else
EndIf

If $var 32767 Then
MsgBox(16, „Beep - Fehler“, „“&$var&" ist zu groß!")
Exit
Else
EndIf

$var2 = InputBox(„Beep - Dauer“, „Gib nun hier die Dauer an. Achtung! In Millisekunden angeben.“)

If $var2 = 0 Then
MsgBox(16, „Beep - Fehler“, „Du musst eine Dauer eingeben!“)
Exit
Else
EndIf

If $var2 > 60000 Then
MsgBox(16, „Beep - Fehler“, „“&$var2&" ist zu lange, Du könntest es nämlich nicht aufhalten.")
Exit
Else
EndIf

If $var > 500 Then
If $var2 > 5000 Then
MsgBox(16, „Beep - Fehler“, „Das hält kein Mensch aus! Das ist zu lange für den hohen Ton.“)
Exit
Else
EndIf
EndIf

MsgBox(64, „Beep - Deine Entscheidung“, „Gute Entscheidung!“&@CRLF&„Du hast „&$var&“ Hz und „&$var2&“ mSek gewählt.“)

Beep($var, $var2)

Es ist fertig!^^

Ich verbleibe mit freundlichen Grüßen, Jan Martin