Sign in to follow this  
Followers 0
Flum

Why does my function give the same value as return?

9 posts in this topic

#1 ·  Posted (edited)

Dear Autoit scripters,

So here is my code, does anyone know why $bet in the consolewrite returns the value 350000. In the function i am doing some calculations. But it seems it does not put them in $bet?

Global $bet = 350000
Global $maxbet = 255000000
Global $onetime = True
Global $flag = True
Global $remember

bet($bet)
ConsoleWrite($bet & @CRLF)
bet($bet)
ConsoleWrite($bet & @CRLF)
bet($bet)
ConsoleWrite($bet & @CRLF)

Func bet($bet)
    If $onetime = True Then
        $remember = $bet
        $onetime = False
        $bet = $bet + $bet
    Else
        If $flag = True Then
            $bet = $remember + $bet
            $flag = False
        Else
            $bet = $bet + $bet
        EndIf
        
    EndIf
Return $bet
EndFunc   ;==>bet
Edited by Flum

Share this post


Link to post
Share on other sites



What's your function for?


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

Hi guinnes,

The function is ment to take a start integer, then multiply that by two, then add the start integer to that and from there i would like to multiply each time by two.

I'm testing the output with the function consolewrite, but it seems to returns 3 times 350000. 

I don't understand, why it is doing that.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Because regardless of what your function does you are not using the returned value, only the global which is not modified.

You pass $bet to the function which becomes a local copy.

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

I bet doing this will fix it:

Func bet(Byref $bet)
;...
EndFunc
2 people like this

♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites

Hi Trancexx & JohnOne

Byref is indeed working, is there any explanation why this will not work with globals? Johnone said i was not using the returned value. I thought i was doing that with

Return $bet

Also i thought once u define a variable as Global, it would work inside and outside functions? I know how to do it now, but i dont quite understand it. 

From the helpfile 

 

Global = Forces creation of the variable in the Global scope

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Global $bet = 350000
Global $maxbet = 255000000
Global $onetime = True
Global $flag = True
Global $remember

$bet = bet($bet)
ConsoleWrite($bet & @CRLF)
$bet = bet($bet)
ConsoleWrite($bet & @CRLF)
$bet = bet($bet)
ConsoleWrite($bet & @CRLF)

Func bet($bet)
    If $onetime = True Then
        $remember = $bet
        $onetime = False
        $bet = $bet + $bet
    Else
        If $flag = True Then
            $bet = $remember + $bet
            $flag = False
        Else
            $bet = $bet + $bet
        EndIf

    EndIf
Return $bet
EndFunc   ;==>bet

Edited by JohnOne
1 person likes this

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

Thanks a bunch JohnOne and trancexx u both teached me something new. Maybe i should have known, but i really did not.

Take this mighty sword as a token of my appreciation,

Sword2.gif

Share this post


Link to post
Share on other sites

Ace.

Also consider...

Global $bet = 350000
Global $maxbet = 255000000
Global $onetime = True
Global $flag = True
Global $remember

bet()
ConsoleWrite($bet & @CRLF)
bet()
ConsoleWrite($bet & @CRLF)
bet()
ConsoleWrite($bet & @CRLF)

Func bet()
    If $onetime = True Then
        $remember = $bet
        $onetime = False
        $bet = $bet + $bet
    Else
        If $flag = True Then
            $bet = $remember + $bet
            $flag = False
        Else
            $bet = $bet + $bet
        EndIf

    EndIf
Return $bet
EndFunc   ;==>bet

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

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  
Followers 0