Probleme mit InputBox-Rückgabewerten

  • Hallo Leute...

    Bin grad im Hotel wegen Lehrgang und hab nix zu tun ... also hab ich mal was für meinen Kollegen gemacht.
    Leider klappt das alles noch nicht so richtig...

    Und zwar hab ich ja die Funktion _beenden(). Die klappt zwar soweit auch, aber wird zum falschen Zeitpunkt aufgerufen... Die soll eigentlich nur kommen, wenn man beim Inputbox-fenster auf abbrechen drückt... aber egal was ich mache, entweder kommt die immer oder gar nicht...

    Wer sieht meinen Fehler?

    Wäre ein GUI in dem Fall besser? (hatte ich noch vor, wollte nur mal was auf die schnelle zusammenbauen...)


    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: heenzketchup

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

    Script Function: Matti's Geschichte

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

    #ce ----------------------------------------------------------------------------

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

    $title= "Matti's Geschichte"
    $test= False

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

    MsgBox(0,$title,"Willkommen bei Matti's kleinem Geschichtengenerator!")
    Do
    $geschlecht=InputBox("Eingabe","Bist du männlich oder weiblich?"&@CR&"Bitte gib entweder m oder w ein ",""," M1")

    If $geschlecht="m" Then
    $txt1=" er"
    $txt2=" seine"
    $txt3=" ihm"
    $test= True
    ElseIf $geschlecht="w" Then
    $txt1=" sie"
    $txt2=" ihre"
    $txt3=" ihr"
    $test= True
    Else
    $test=False
    MsgBox(0,"Ha ha...","Bitte gib nur M oder W ein, nix anderes...")
    EndIf

    Until $test= True

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


    $name1=InputBox("Eingabe","Wie heißt du?",""," M")
    If 2 Then
    _beenden()
    EndIf
    $Datum=InputBox("Eingabe","Wann hast du deine Ausbildung begonnen?",""," M")
    If 2 Then
    _beenden()
    EndIf
    $eigenschaft=InputBox("Eingabe","Was ist deine schlechteste Eigenschaft?"&@CRLF&"Bitte gib nur ein Wort ein!",""," M")
    If 2 Then
    _beenden()
    EndIf
    $Adjektiv=InputBox("Eingabe",'Nenne ein anderes Wort für "schlecht".',""," M")
    If 2 Then
    _beenden()
    EndIf
    $name2=InputBox("Eingabe","Wie heißt dein Ausbilder?",""," M")
    If 2 Then
    _beenden()
    EndIf
    $name3=InputBox("Eingabe","Nenne einen Mitarbeiter aus dem HRZ, der schon hier arbeitet, seitdem du hier bist.",""," M")
    If 2 Then
    _beenden()
    EndIf
    $name4=InputBox("Eingabe","Bitte nenne noch einen Mitarbeiter.",""," M")
    If 2 Then
    _beenden()
    EndIf
    $name5=InputBox("Eingabe","Und noch einen!",""," M")
    If 2 Then
    _beenden()
    EndIf
    $ato1=InputBox("Eingabe","Gib ein Wort ein, welches du sagst/denkst, wenn du dich ärgerst!",""," M")
    If 2 Then
    _beenden()
    EndIf
    $ato2=InputBox("Eingabe","Vor welchem Tier ekelst du dich?",""," M")
    If 2 Then
    _beenden()
    EndIf

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

    MsgBox(64,"Moment...", "Gleich kannst du die ganze Wahrheit über das HRZ erfahren...")
    MsgBox(0,"Die ganze Wahrheit...","Am "& $Datum &" begann "& $name1 &$txt2 & " Ausbildung im HRZ der Uni Bielefeld."&@CR& $name1 &" war schon immer "& $eigenschaft&", darum war die Stelle im HRZ wie für "&$txt1 &" geschaffen."& @CR &"Die erste Aufgabe von "& $name1 &" bestand darin, einen PC zusammenzubauen. Diese Aufgabe empfand "& $txt1 &" als "& $Adjektiv &"."&@CR &"Anschließend wurde "& $name1 &" von "& $name2 &" einmal durch das HRZ geführt und "& $txt3 &" wurden die Mitarbeiter von "& $name2 &" vorgestellt."&@CR &"Bei diesem Rundgang blieben "& $name1 &" vor allem "& $name3 &", "& $name4 &" und "& $name5 &" im Gedächtnis. "& @CR &$name1 &" erinnert sich heute noch genau an die ersten Begegnungen. "& $txt1 &" empfand "& $name3 &" als sehr "& $ato1 &". Er sagte zu "& $name1 &': "Freut mich dich kennen zu lernen, du erinnerst mich sehr an ein/einen/eine '& $ato2 &'!"')

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

    Func _beenden()
    $hdl=MsgBox(1,"Beenden","Willst du wirklich aufhören?")

    If $hdl=1 Then
    MsgBox(0,"Beenden", "Ok, dann tschüss...")
    Exit
    ElseIf $hdl=2 Then
    MsgBox(0,"Beenden", "Ok, weiter gehts...")
    EndIf

    EndFunc

    [/autoit]


    Gruß,

    heenzketchup

  • Du hast etwas kleines übersehn ;) Du musst ja auch abfragen was 2 sein soll. Also

    [autoit]

    If $name1 = 2 Then
    _beenden()
    EndIf

    [/autoit]

    und nicht

    [autoit]

    If 2 Then
    _beenden()
    EndIf

    [/autoit]

    Dann noch nach jeder Inputbox das ändern und es sollte funkltionieren ;)


    MfG eMkay

  • So gehts wesentlich besser nuts ;) Aber du hast noch einen winzigen Fehler. Du solltest eine $txt4 erstellen mit " ihm" und " ihr". Sonst ergibt ein Satz am Ende keinen Sinn ;)

    Der hier:

    [autoit]

    ", darum war die Stelle im HRZ wie für "&$txt1

    [/autoit]

    Sollte dann so aussehen:

    [autoit]

    ", darum war die Stelle im HRZ wie für "&$txt4

    [/autoit]

    MfG eMkay

  • das hab ich zwischendurch auch schon probiert, aber da gings nich... hmmm...

    komisch...
    ich probiers aber gleich nochmal...

    ach ja, bei msgboxen funktioniert es aber nur mit zahlen.... Ja ja, ich weiß, is was gaaaanz anderes ;)


    Edit: Danke für den Tipp, emkay

  • So habs mal soweit angebessert.

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.0.0
    Author: heenzketchup
    Script Function: Matti's Geschichte
    #ce ----------------------------------------------------------------------------

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

    $title= "Matti's Geschichte"
    $test= False

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

    MsgBox(0,$title,"Willkommen bei Matti's kleinem Geschichtengenerator!")
    Do
    $geschlecht=InputBox("Eingabe","Bist du männlich oder weiblich?"&@CR&"Bitte gib entweder m oder w ein ",""," M1")
    If $geschlecht="m" Then
    $txt1="er"
    $txt2="seine"
    $txt3="ihm"
    $txt4="ihn"
    $test= True
    ElseIf $geschlecht="w" Then
    $txt1="sie"
    $txt2="ihre"
    $txt3="ihr"
    $txt4="sie"
    $test= True
    Else
    $test=False
    MsgBox(0,"Ha ha...","Bitte gib nur M oder W ein, nix anderes...")
    EndIf
    Until $test= True

    $name1=InputBox("Eingabe","Wie heißt du?",""," M")
    If @error then
    _beenden()
    EndIf
    $Datum=InputBox("Eingabe","Wann hast du deine Ausbildung begonnen?",""," M")
    If @error then
    _beenden()
    EndIf
    $eigenschaft=InputBox("Eingabe","Was ist deine schlechteste Eigenschaft?"&@CRLF&"Bitte gib nur ein Wort ein!",""," M")
    If @error then
    _beenden()
    EndIf
    $Adjektiv=InputBox("Eingabe",'Nenne ein anderes Wort für "schlecht".',""," M")
    If @error then
    _beenden()
    EndIf
    $name2=InputBox("Eingabe","Wie heißt dein Ausbilder?",""," M")
    If @error then
    _beenden()
    EndIf
    $name3=InputBox("Eingabe","Nenne einen Mitarbeiter aus dem HRZ, der schon hier arbeitet, seitdem du hier bist.",""," M")
    If @error then
    _beenden()
    EndIf
    $name4=InputBox("Eingabe","Bitte nenne noch einen Mitarbeiter.",""," M")
    If @error then
    _beenden()
    EndIf
    $name5=InputBox("Eingabe","Und noch einen!",""," M")
    If @error then
    _beenden()
    EndIf
    $ato1=InputBox("Eingabe","Gib ein Wort ein, welches du sagst/denkst, wenn du dich ärgerst!",""," M")
    If @error then
    _beenden()
    EndIf
    $ato2=InputBox("Eingabe","Vor welchem Tier ekelst du dich?",""," M")
    If @error then
    _beenden()
    EndIf
    MsgBox(64,"Moment...", "Gleich kannst du die ganze Wahrheit über das HRZ erfahren...")
    MsgBox(0,"Die ganze Wahrheit...","Am "& $Datum &" begann "& $name1 & " "&$txt2 & " Ausbildung im HRZ der Uni Bielefeld."&@CR& $name1 &" war schon immer "& $eigenschaft&", darum war die Stelle im HRZ wie für "&$txt4 &" geschaffen."& @CR &"Die erste Aufgabe von "& $name1 &" bestand darin, einen PC zusammenzubauen. Diese Aufgabe empfand "& $txt1 &" als "& $Adjektiv &"."&@CR &"Anschließend wurde "& $name1 &" von "& $name2 &" einmal durch das HRZ geführt und "& $txt3 &" wurden die Mitarbeiter von "& $name2 &" vorgestellt."&@CR &"Bei diesem Rundgang blieben "& $name1 &" vor allem "& $name3 &", "& $name4 &" und "& $name5 &" im Gedächtnis. "& @CR &$name1 &" erinnert sich heute noch genau an die ersten Begegnungen. "& $txt1 &" empfand "& $name3 &" als sehr "& $ato1 &". Er sagte zu "& $name1 &': "Freut mich dich kennen zu lernen, du erinnerst mich sehr an ein/einen/eine '& $ato2 &'!"')
    Func _beenden()
    $hdl=MsgBox(1,"Beenden","Willst du wirklich aufhören?")
    If $hdl=1 Then
    MsgBox(0,"Beenden", "Ok, dann tschüss...")
    Exit
    ElseIf $hdl=2 Then
    MsgBox(0,"Beenden", "Ok, weiter gehts...")
    EndIf
    EndFunc

    [/autoit]


    MfG eMkay

  • Vielen Dank, emkay!

    Also heißt " If @error Then ", dass das ausgeführt wird bei irgendeinem fehler... aber soweit ich weiß wird @error doch mit 0 besetzt, wenn die eingabe erfolgreich zurückgegeben werden konnte... woher weiß denn " If @error Then ",dass es bei @error=0 nix machen muss?


  • Aus der Hilfe zur Inputbox. ;)

  • Ich denk eher er meint, dass das fehlt:
    if @error = 1 then

    Die If bedingung ist bei 0 false
    und bei >0 true

  • aber wo genau steht denn, dass das so ist?

    Edit: Hier nochmal die _beenden-Funktion

    [autoit]

    Func _beenden()
    $hdl=MsgBox(1,"Beenden","Willst du wirklich aufhören?")

    If $hdl=1 Then
    MsgBox(0,"Beenden", "Ok, dann tschüss...")
    Exit
    ElseIf $hdl=2 Then
    MsgBox(0,"Beenden", "Ok, weiter gehts...")
    EndIf

    EndFunc

    [/autoit]

    Nur noch mal zum sichergehen... Da es sich da ja um MsgBoxen handelt und nicht um Inputboxen, kann ich das $hdl weglassen, oder? also da würde 1 bzw 2 als Zahl reichen, hab ich das richtig verstanden?