capo Posted January 25, 2009 Share Posted January 25, 2009 Hey, i have a function that takes lots of params, but how do i make the function hold as many params as the user wants to enter? like instead of: Func MyFunc($param1,$param2,$param3,$param4,$param5, and so on) i can do: Func MyFunc($param1, ...) that will take as many params. Link to comment Share on other sites More sharing options...
wolf9228 Posted January 25, 2009 Share Posted January 25, 2009 Hey, i have a function that takes lots of params, but how do i make the function hold as many params as the user wants to enter? like instead of: Func MyFunc($param1,$param2,$param3,$param4,$param5, and so on) i can do: Func MyFunc($param1, ...) that will take as many params. $result = MyFunc(1111111,222222,33333,44444,55555,66666 , _ 777777,88888,99999,1000000,1100000 ,122222 , _ 133333,144444,15555,166666,177777,1999999 , _ 200000,2100000,220000000) MsgBox(0,"result",$result) Func MyFunc($param1 = 1 , $param2 = 2 , $param3 = 3 , $param4 = 4 , $param5 =5 ,$param6 = 6 , _ $param7 = 7 , $param8 = 8, $param9 = 9 , $param10 = 10 , $param11 = 11 , _ $param12 = 12 , $param13 = 13 , $param14 = 14 , $param15 = 15 , $param16 = 16 , _ $param17 = 17 ,$param18 = 18 , $param19 = 19 , $param20 = 20 , $param21 = 21 , _ $param22 = 22 , $param23 = 23 , $param24 = 24 , $param25 = 25 , $param26 = 26 , _ $param27 = 27 , $param28 = 28 , $param29 = 29 , $param30 = 30 , $param31 = 31 , _ $param32 = 32 , $param33 = 33 , $param34 = 34 , $param35 = 35 , $param36 = 36 , _ $param37 = 37 , $param38 = 38 ,$param39 = 39 , $param40 = 40) Dim $result = 0 For $i = 1 to 40 Step 1 $result += Eval("param" & $i) Next Return $result EndFunc صرح السماء كان هنا Link to comment Share on other sites More sharing options...
Malkey Posted January 25, 2009 Share Posted January 25, 2009 (edited) $result = MyFunc(1111111,222222,33333,44444,55555,66666 , _ 777777,88888,99999,1000000,1100000 ,122222 , _ 133333,144444,15555,166666,177777,1999999 , _ 200000,2100000,220000000) MsgBox(0,"result",$result) Func MyFunc($param1 = 1 , $param2 = 2 , $param3 = 3 , $param4 = 4 , $param5 =5 ,$param6 = 6 , _ $param7 = 7 , $param8 = 8, $param9 = 9 , $param10 = 10 , $param11 = 11 , _ $param12 = 12 , $param13 = 13 , $param14 = 14 , $param15 = 15 , $param16 = 16 , _ $param17 = 17 ,$param18 = 18 , $param19 = 19 , $param20 = 20 , $param21 = 21 , _ $param22 = 22 , $param23 = 23 , $param24 = 24 , $param25 = 25 , $param26 = 26 , _ $param27 = 27 , $param28 = 28 , $param29 = 29 , $param30 = 30 , $param31 = 31 , _ $param32 = 32 , $param33 = 33 , $param34 = 34 , $param35 = 35 , $param36 = 36 , _ $param37 = 37 , $param38 = 38 ,$param39 = 39 , $param40 = 40) Dim $result = 0 For $i = 1 to 40 Step 1 $result += Eval("param" & $i) Next Return $result EndFuncHere is wolf9228 example re-written giving the same result. Global $aMyArray[40] = [1111111, 222222, 33333, 44444, 55555, 66666, _ 777777, 88888, 99999, 1000000, 1100000, 122222, _ 133333, 144444, 15555, 166666, 177777, 1999999, _ 200000, 2100000, 220000000] For $x = 0 to UBound($aMyArray)-1 if $aMyArray[$x] = 0 Then $aMyArray[$x] = $x +1 next MsgBox(0, "result", MyFunc($aMyArray)) Func MyFunc($aMyArray) Dim $result = 0 For $i = 0 To UBound($aMyArray) - 1 $result += $aMyArray[$i] Next Return $result EndFunc ;==>MyFunc An array can be a parameter. Edited January 25, 2009 by Malkey Link to comment Share on other sites More sharing options...
Spiff59 Posted January 25, 2009 Share Posted January 25, 2009 (edited) Pick an "unused" character, make it your delimiter, then use StringSplit #include <Array.au3> MyFunc("param1" & "|" & "param2" & "|" & "param3") Exit Func MyFunc($parms) $parms = StringSplit($parms, "|") _ArrayDisplay($parms,"Parm Count and Parms") EndFunc Edited January 25, 2009 by Spiff59 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now