Jump to content

Returning A Variable From A Function


Recommended Posts

Hope some one can help. I am reading a file line by line looking for a string that contains a certain token. As I will be looking for different tokens in the same file I decided to make my own function that returns the second part of the line containing a required path as a variable.

Trouble is I can't seem to get the function to return the variable.

What am I doing wrong?

AutoItSetOption("TrayIconDebug", 1)

Local $spath="dfdf"
Local $userdir="C:\test\"

_FilePathFromSysParams ($userdir, "SYSDATAPATH", $spath )

Func _FilePathFromSysParams ($userdir, $token, ByRef $spath)
Local $line = 1
Local $read = 0
Local $stringpresent = 0

For $stringpresent = 0 to 1
    $read = FileReadLine ($userdir&"file.txt",$line)
    MsgBox(4096, "Data directory", ""& $read)
    $stringpresent = StringInStr( $read, $token );This will return 1 if $token is present
    $line = $line +1
    If $stringpresent <> 1 Then ContinueLoop
    Next

$linesplit = StringSplit($read, ","); in the file each line is "token,path"
$linesplit[2] = $spath
Return $spath
EndFunc; _FilePathFromSysParams

$datadir = $spath
MsgBox(4096, "Data directory", ""& $datadir)


            
        

        

        
    

    

    
        Link to post
        
            
        
        
        

        
            Share on other sites
            

    
        
            

    

        
            

    

        
            

    

        
            

    

        
    

        
    

    

                    
                    
                    
                

                    

                    
                    






    

    

    
        
            


    
        
    

            
        
        
            
                

trids
                

    
        
    
             2
    
        
    

            
            
                Posted 
                
            
        
    
    
        

trids

        
            
                Hmmm .. and what have we here?
            
            

            
                


    
        
    

                
            
            Active Members
            
            
                
                    

    
        
    
             2
    
        
    

                    
                
                936 posts

                
                

            
        
    
    
        



    
        
            
                
                    
                    
                    
                    
                    
                
            
            
                
                    
                    
                        
                        
                            Share
                        
                        
                        
                        
                            
                                
                            
                            
                            
                            
                            
                            
                        
                    
                
                
            
        

        
            Posted  
            
            
                
                
            
        
    

    


    
        
        
            
Looks like you're ignoring the return value   . See the following illustration:
   $nValue1 = 100
    $nValue2 = 10

;This just causes the code in the UDF to be executed
;.. but ignores any return value
    _AddThem($nValue1, $nValue2)    
    
;This executes the code in the UDF
;.. and does something with the return value..
    $nReturnValue = _AddThem($nValue1, $nValue2)    
    MsgBox(4096 + 32, "", $nReturnValue)    


Func _AddThem ($pnV1, $pnV2)
;This function adds two numbers, and returns the result

    $nSum = $pnV1 + $pnV2
    Return $nSum

EndFunc

Hope this helps :huh2:

Link to post
Share on other sites

Since your function has definded $spath as BYREF, the value can be changed from the function itself, so there is no RETURN necessary.

I'd suggest changing

$linesplit[2] = $spath
Return $spath

into

$spath = $linesplit[2]

which should do the job.

And I'd move the commands below the EndFunction above the whole Function block to make it more readable :D

Any of my own codes posted on the forum are free for use by others without any restriction of any kind. (WTFPL)

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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...