czardas Posted November 9, 2011 Share Posted November 9, 2011 I am aware that this can be done by passing a single array of values as the parameter to a function, but I intend to write some functions which accept an indefinite number of separate integers as parameters. It amounts to the same thing in the end, but the syntax will be different. So here's what I came up with. expandcollapse popup#include <Array.au3> Dim $aParamMagic = _ParamMagic(1,2,3,4,5,6,7,8,9) ; Up to 100 parameters allowed If @error Then MsgBox(0, "Error Code", @error) Else _ArrayDisplay($aParamMagic, "Parameters Passed") EndIf Func _ParamMagic($00="",$01="",$02="",$03="",$04="",$05="",$06="",$07="",$08="",$09="", _ $10="",$11="",$12="",$13="",$14="",$15="",$16="",$17="",$18="",$19="", _ $20="",$21="",$22="",$23="",$24="",$25="",$26="",$27="",$28="",$29="", _ $30="",$31="",$32="",$33="",$34="",$35="",$36="",$37="",$38="",$39="", _ $40="",$41="",$42="",$43="",$44="",$45="",$46="",$47="",$48="",$49="", _ $50="",$51="",$52="",$53="",$54="",$55="",$56="",$57="",$58="",$59="", _ $60="",$61="",$62="",$63="",$64="",$65="",$66="",$67="",$68="",$69="", _ $70="",$71="",$72="",$73="",$74="",$75="",$76="",$77="",$78="",$79="", _ $80="",$81="",$82="",$83="",$84="",$85="",$86="",$87="",$88="",$89="", _ $90="",$91="",$92="",$93="",$94="",$95="",$96="",$97="",$98="",$99="") Local $aParam[100] = [$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$10,$11, _ $12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29, _ $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47, _ $48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65, _ $66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83, _ $84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99] For $i = 0 To 99 ; See how many parameters were passed to the func If IsString($aParam[$i]) Then ; The first non integer occurs ExitLoop ElseIf Not IsInt($aParam[$i]) Then Return SetError(1, 0, 0) EndIf Next If $i = 0 Then Return SetError(2, 0, 0) ; No valid parameters ReDim $aParam[$i] ; Array only needs to contain valid parameters ; Do stuff here Return $aParam ; Example return variable EndFunc Is there another way to do this with AutoIt? The problem is that the code is a bit bulky. operator64 ArrayWorkshop Link to comment Share on other sites More sharing options...
guinness Posted November 9, 2011 Share Posted November 9, 2011 Look at @NumParams and #forceref for another way of doing it. You'll also get a good idea of how this is done in WinHTTP.au3. Plus, if the 'bulky' thing is an issue then go with the array option, otherwise this is as good as it gets as far as I know. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
czardas Posted November 9, 2011 Author Share Posted November 9, 2011 (edited) Thanks guiness. @NumParams was the macro that I had forgotten about. That was exactly the response I was looking for. Edited November 9, 2011 by czardas operator64 ArrayWorkshop 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