Jump to content

Recommended Posts

Posted

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)


            
        

        

        
    

    
    

    

                    
                    
                        
                            


     (adsbygoogle = window.adsbygoogle || []).push({});

                        
                    
                    
                

                    

                    
                    






    

    

    
        
            
                


    
        
    

                
                
                    
                        

                    
                
            
        
        
            
                


trids
            
            
                Posted 
                
            
        
    
    
        


trids
            
        
        
            
                
                    


    
        
    

                    
                    
                        

                    
                
            
            
                Active Members
                
            
            
                
                    
                        
                            
                                
                            
                                 936
                            
                                
                            
                        
                        
                    
                
            
            
                

    
    
        
Hmmm .. and what have we here?
    
    

            
        
    
    
        



    
        
            
                
                    
                    
                    
                    
                    
                
            
            
                
                    
                    
                        
                        
                        
                        
                        
                        
                            
                                
                            
                            
                            
                            
                            
                            
                        
                    
                
                
            
        

        
           
           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:

Posted

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)

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...