Func mit If Abfrage

  • Moin,
    ich habe mehrerer Funktionen mit der selben IF Afrage.
    Wie kann ich es deklarieren, das die richtige Funktion verwendet wird.

    Beispiel:
    Func
    If Tag = Sanstag dann
    EndFunc

    Func
    If Tag = Sanstag dann
    EndFunc

    usw.

    Gruß
    Wuff

    Einmal editiert, zuletzt von wuff100 (5. September 2012 um 10:08)

  • Das hier sollte wohl deinem Wunsch entsprechen:

    [autoit]

    Global $s_Tag = 'Samstag'
    ConsoleWrite (foo ($s_Tag) & @CRLF)

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

    $s_Tag = 'Sonntag'
    ConsoleWrite (foo ($s_Tag) & @CRLF)

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

    Func foo ($v_Var)
    Return $v_Var = 'Samstag'
    EndFunc

    [/autoit]

    Die Funktion foo gibt True zurück, wenn es Samstag ist - ansonsten False.

  • Nur eine Funktion verwenden!
    Hier ein schematisches Beispiel:

    Func _wtag()
    Switch Tag
    Case Sonntag
    dann ...
    Case Montag
    dann ...
    EndSwitch
    EndFunc ;==> _wtag()

    Spoiler anzeigen
    [autoit]


    Switch @WDAY ;i der Variable täglich den Wochentag zuweisen 1-7
    Case 1
    $WDAY = " Sonntag "
    Case 2
    $WDAY = " Montag "
    Case 3
    $WDAY = " Dienstag "
    Case 4
    $WDAY = " Mittwoch "
    Case 5
    $WDAY = " Donnerstag "
    Case 6
    $WDAY = " Freitag "
    Case 7
    $WDAY = " Samstag "
    EndSwitch
    GUICtrlSetData($Label, $WDAY)
    ; Ende

    [/autoit]
  • Ich schätze er meint eher so etwas:

    Spoiler anzeigen
    [autoit]

    $Tag = InputBox('Eingabe','Geben sie einen Wochentag ein:','Samstag')

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

    Switch $Tag
    Case 'Montag'
    _Monday()
    Case 'Dienstag'
    _Tuesday()
    Case 'Mittwoch'
    _Wednesday()
    Case 'Donnerstag'
    _Thursday()
    Case 'Freitag'
    _Friday()
    Case 'Samstag'
    _Saturday()
    Case 'Sonntag'
    _Sunday()
    Case Else
    MsgBox(16,'Ausgabe','"'&$Tag&'" ist kein deutscher Wochentag!')
    EndSwitch

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

    MsgBox(64,'Beenden','Dieses Beispiel wird nun beendet...')
    Exit

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

    Func _Monday()
    MsgBox(64,'Ausgabe','Die Funktion _Monday() wurde aufgerufen!')
    EndFunc

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

    Func _Tuesday()
    MsgBox(64,'Ausgabe','Die Funktion _Tuesday() wurde aufgerufen!')
    EndFunc

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

    Func _Wednesday()
    MsgBox(64,'Ausgabe','Die Funktion _Wednesday() wurde aufgerufen!')
    EndFunc

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

    Func _Thursday()
    MsgBox(64,'Ausgabe','Die Funktion _Thursday() wurde aufgerufen!')
    EndFunc

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

    Func _Friday()
    MsgBox(64,'Ausgabe','Die Funktion _Friday() wurde aufgerufen!')
    EndFunc

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

    Func _Saturday()
    MsgBox(64,'Ausgabe','Die Funktion _Saturday() wurde aufgerufen!')
    EndFunc

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

    Func _Sunday()
    MsgBox(64,'Ausgabe','Die Funktion _Sunday() wurde aufgerufen!')
    EndFunc

    [/autoit]


    Edit: Okay RR04 war schneller... :whistling:

    LG
    Christoph :)

  • Ihr seht es sind mehrere Functionen die mit AdlibRegister("_Samstag_Firma_Montage",150) usw. automatisch rechnen.
    Nur die IF Abfrage ist immer gleich. Die daten werden in InputBox Feldern eingegeben.


    Func _Samstag_Firma_Montage()
    _eingaben_auslesen()
    IF $varWochentagText = "Sonnabend" Then
    $erstenzwei = IniRead(@ScriptDir & "\ini\daten.ini","stunden","erstenzwei","")
    $Summe = $Rfirma1 + $Rmontage1 - $erstenzwei
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    GUICtrlSetData($p25_1,$erstenzwei)
    IF $Summe >0 Then
    GUICtrlSetData($p40_1,$Summe)
    ELSE
    GUICtrlSetData($p40_1,"")
    GUICtrlSetData($p25_1,"")
    endif
    Endif
    EndFunc


    Func _Samstag_Probefahrt()
    _eingaben_auslesen()

    IF $varWochentagText = "Sonnabend" Then
    $Summe = $Rprobefahrt1
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    IF $Summe >0 Then
    GUICtrlSetData($p0_1,$Summe)
    ELSE
    GUICtrlSetData($p0_1,"")
    endif
    $Summe = $Rprobefahrt2
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    IF $Summe >0 Then
    GUICtrlSetData($p0_2,$Summe)
    ELSE
    GUICtrlSetData($p0_2,"")
    endif
    $Summe = $Rprobefahrt3
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    IF $Summe >0 Then
    GUICtrlSetData($p0_3,$Summe)
    ELSE
    GUICtrlSetData($p0_3,"")
    endif
    $Summe = $Rprobefahrt4
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    IF $Summe >0 Then
    GUICtrlSetData($p0_4,$Summe)
    ELSE
    GUICtrlSetData($p0_4,"")
    endif
    Endif
    Endfunc

    Func _Samstag_Probefahrt_Fahrer()
    _eingaben_auslesen()

    IF $varWochentagText = "Sonnabend" Then
    $erstenzwei = IniRead(@ScriptDir & "\ini\daten.ini","stunden","erstenzwei","")
    $Summe = $Rprobefahrt1
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    IF $Summe >0 Then
    GUICtrlSetData($p0_1,$Summe)
    ELSE
    GUICtrlSetData($p0_1,"")
    endif
    $Summe = $Rfahrer1 - $erstenzwei
    $SummeRound = Round($Summe,2)
    $Summe= StringReplace($SummeRound, ".", ",")
    GUICtrlSetData($p25_1,$erstenzwei)
    IF $Summe >0 Then
    GUICtrlSetData($p40_1,$Summe)
    ELSE
    GUICtrlSetData($p40_1,"")
    GUICtrlSetData($p25_1,"")
    endif

    endif

    EndFunc

    Gruß
    Wuff

  • Also erstmal solltest du dein komplettes Script posten, zweitens wäre es sehr sehr viel übersichtlicher, wenn du zuvor in Scite einmal Strg+T drücken würdest (dieser Shortcut führt das Plugin Tidy aus) und drittens solltest du dir angewöhnen Quellcodes immer in einem Spoiler (die SP-Taste im Editor) und dann im Spoiler in einem Autoit-Tag (das Autoit-Zeichen im Editor) zu posten... ;) Außerdem wäre es nett, wenn du nocheinmal versuchen könntest dein Problem in einem Post verständlich und vor Allem komplett zu erläutern. Danke :)

    LG
    Christoph :)

  • So jetzt nochmal erklärt. Ich habe mehrere Rechenaufgaben. Die Resultate stehen immer im gleichen Feld "$Input3". Wie kann ich es lösen, damit jeder Rechenschritt für sich abgearbeitet wird?


    Spoiler anzeigen

    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 451, 193, 115)
    $Input1 = GUICtrlCreateInput("", 40, 32, 193, 21)
    $Input2 = GUICtrlCreateInput("", 40, 64, 193, 21)
    $Input3 = GUICtrlCreateInput("", 40, 88, 193, 21)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $nMsg = $Input1
    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
    GUICtrlSetData($Input3, GUICtrlRead($Input1) -2)
    EndSwitch
    WEnd

    Einmal editiert, zuletzt von wuff100 (3. September 2012 um 12:31)

  • Jeder Rechenschritt wird für sich abgearbeitet ;)

    [autoit]

    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))

    [/autoit]


    Der Rechenschritt wird ausgerechnet und in das Inputfeld geschrieben

    [autoit]

    GUICtrlSetData($Input3, GUICtrlRead($Input1) -2)

    [/autoit]


    Rechenschritt wird ausgeführt und in das selbe Inputfeld geschrieben.

    Der 2te Rechenschritt überschreibt aber die Anzeige des ersten Rechenschritts.

    Dein Problem habe ich aber auch noch immer nicht verstanden.

  • Das wird noch kompliziert mit dir... ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 451, 193, 115)
    $Input1 = GUICtrlCreateInput("", 40, 32, 193, 21)
    $Input2 = GUICtrlCreateInput("", 40, 64, 193, 21)
    $Input3 = GUICtrlCreateInput("", 40, 88, 193, 21)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $nMsg = $Input1
    If GUICtrlRead($Input1) > 10 Then
    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
    Else
    GUICtrlSetData($Input3, GUICtrlRead($Input1) - 2)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Hier nochmal als Beispiel.

    Wenn der Wert in $Input1 größer als 10 ist dann wird die erste Aufgabe gelöst,sonst die zweite Aufgabe