Jump to content
Sign in to follow this  
ddarek

Returns of 2 variables in one func

Recommended Posts

ddarek

Hello

I am struggling with such a thing

Func FindEmptyField() ;
        For $i = 1 To $iLast
                For $j = 0 To $jLast
                        ;ConsoleWrite("Checking: " & $i & ", " & $j & @CRLF)
                        $FieldInfo = GetField($i, $j)
                        If GetField($i, $j) = 0 Then
                                ConsoleWrite($i & ", " & $j & "  <-Can move! " & @CRLF)
                                ExitLoop
                        EndIf
                Next
        Next
EndFunc

I would like that this function returns first first $i and $j which i can use

I thought about Array but I think it is could be too heavy, maybe with setextended will be nicer ?

Any help ?

Edited by ddarek

Share this post


Link to post
Share on other sites
guinness

Look at SetError()


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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
ddarek

Like this ?

Func FindEmptyField() ;
        For $i = 1 To $iLast
                For $j = 0 To $jLast
                        ;ConsoleWrite("Checking: " & $i & ", " & $j & @CRLF)
                        $FieldInfo = GetField($i, $j)
                        If GetField($i, $j) = 0 Then
                                SetError($i,$j)
                                ConsoleWrite($i & ", " & $j & "  <-Can move! " & @CRLF)
                                ExitLoop
                        EndIf
                Next
        Next

EndFunc
Edited by ddarek

Share this post


Link to post
Share on other sites
ProgAndy

SetError is to set error values. If you need extended return values, use SetExtended, just as you said.

In your case, an array as return value or ByRef-params should be the best choice. If you don't want an array, use ByRef

Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Share this post


Link to post
Share on other sites
wakillon

Example of returning 2 values with SetExtended

$_Result = _Function ( )
$_extended = @extended
ConsoleWrite ( "$_Result : " & $_Result & ' $_extended : ' & $_extended & @Crlf )

Func _Function ( )
    Local $_Var1 = 100
    Local $_Var2 = 10
    Return SetExtended ( $_Var1, $_Var2 )
EndFunc

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
ddarek

@ProgAndy: SetError , ye was absent minded just SetError(1) is enough

@wakillon thnx , but i needed it separately,

so $i I return normal way and $j as SetExtended($j) <- this way it works also

big thnx

Share this post


Link to post
Share on other sites
wakillon

@ProgAndy: SetError , ye was absent minded just SetError(1) is enough

@wakillon thnx , but i needed it separately,

so $i I return normal way and $j as SetExtended($j) <- this way it works also

big thnx

Yes, this is identical, values are just crossed.

$_Result = _Function1 ( )
$_extended = @extended
ConsoleWrite ( "$_Result : " & $_Result & ' $_extended : ' & $_extended & @Crlf )

$_Result = _Function2 ( )
$_extended = @extended
ConsoleWrite ( "$_Result : " & $_Result & ' $_extended : ' & $_extended & @Crlf )

Func _Function1 ( )
    Local $_Var1 = 100
    Local $_Var2 = 10
    Return SetExtended ( $_Var1, $_Var2 )
EndFunc

Func _Function2 ( )
    Local $_I = 100
    Local $_J = 10
    SetExtended ( $_J )
    Return $_I
EndFunc

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.