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
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
Was meinst du mit
ZitatWie kann ich es deklarieren, das die richtige Funktion verwendet wird
Ich werd aus deinem Beispiel nicht schlau..
Das hier sollte wohl deinem Wunsch entsprechen:
[autoit]Global $s_Tag = 'Samstag'
ConsoleWrite (foo ($s_Tag) & @CRLF)
$s_Tag = 'Sonntag'
ConsoleWrite (foo ($s_Tag) & @CRLF)
Func foo ($v_Var)
Return $v_Var = 'Samstag'
EndFunc
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()
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
Ich schätze er meint eher so etwas:
$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
MsgBox(64,'Beenden','Dieses Beispiel wird nun beendet...')
Exit
Func _Monday()
MsgBox(64,'Ausgabe','Die Funktion _Monday() wurde aufgerufen!')
EndFunc
Func _Tuesday()
MsgBox(64,'Ausgabe','Die Funktion _Tuesday() wurde aufgerufen!')
EndFunc
Func _Wednesday()
MsgBox(64,'Ausgabe','Die Funktion _Wednesday() wurde aufgerufen!')
EndFunc
Func _Thursday()
MsgBox(64,'Ausgabe','Die Funktion _Thursday() wurde aufgerufen!')
EndFunc
Func _Friday()
MsgBox(64,'Ausgabe','Die Funktion _Friday() wurde aufgerufen!')
EndFunc
Func _Saturday()
MsgBox(64,'Ausgabe','Die Funktion _Saturday() wurde aufgerufen!')
EndFunc
Func _Sunday()
MsgBox(64,'Ausgabe','Die Funktion _Sunday() wurde aufgerufen!')
EndFunc
Edit: Okay RR04 war schneller...
@Christoph wenn wulf mehr Angaben gemacht hätte, könnten wir genauer helfen.
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
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?
#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
Jeder Rechenschritt wird für sich abgearbeitet
GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
[/autoit]
Der Rechenschritt wird ausgerechnet und in das Inputfeld geschrieben
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 war klar. Es soll aber entweder der 1. oder der 2. Rechenschritt erfolgen.
Das wird noch kompliziert mit dir...
#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 ###
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
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
Moin,
hab es lösen können.
Gruß
Wuff
Kannst du die Lösung einfach mal hier posten?