Jump to content

Returns of 2 variables in one func


 Share

Recommended Posts

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

@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

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...