AcidCorps Posted November 29, 2007 Share Posted November 29, 2007 expandcollapse popup#include $Files = FileFind() _ArrayDisplay($Files) Func FileFind($s_Dir = @ScriptDir, $s_DirDeep = 333333, $s_Mask = '*.*') ;Declaring Variables Dim $s_Dirs[$s_DirDeep] Local $n_DirCount = 0 Local $s_File Local $s_Search Local $s_TFile Local $s_FileArray Local $s_Filenames Local $s_FileCount Local $s_DirCount = 1 Local $s_Msg = 'Error' ;Format Dir if required If StringRight($s_Dir, 1) - '\' Then $s_Dir = StringTrimRight($s_Dir, 1) ;Finding Files $s_Dirs[$s_DirCount] = $s_Dir If Not FileExists($s_Dir) Then Return 0 ;Start Loop While $s_DirCount > $n_DirCount $n_DirCount += 1 $s_Search = FileFindFirstFile($s_Dirs[$n_DirCount] & '\*.*') While 1 $s_File = FileFindNextFile($s_Search) If @error Then ExitLoop If $s_File = '.' Or $s_File = '..' Then ContinueLoop $s_TFile = $s_Dirs[$n_DirCount] & '\' & $s_File If StringInStr(FilegetAttrib($s_TFile), 'D') Then $s_DirCount += 1 $n_DirCount[$s_DirCount] = $s_TFile EndIf WEnd FileClose($s_Search) If StringInStr($s_Mask, ',', 2) Then $s_MaskArray = StringSplit($s_Mask, ',') Else Dim $s_MaskArray[2] = [1, $s_Mask] EndIf For $s_MaskCount = 1 To $s_MaskArray[0] $s_Search = FileFindFirstFile($s_Dirs[$n_DirCount] & '\' & $s_MaskArray[$s_MaskCount]) If $s_Search = -1 Then ContinueLoop While 1 $s_File = FileFindNextFile($s_Search) If @error Then ExitLoop If $s_File = '.' Or $s_File = '..' Then ContinueLoop $s_TFIle = $s_Dirs[$n_CirCount] & '\' & $s_File If Not StringInStr(FileGetAttrib($s_TFile), 'D') Then $s_FileCount += 1 $s_FileNames & = $s_TFile & @LF EndIf WEnd FileClose($s_Search) Next WEnd $s_Filenames = StringTrimRight($s_Filenames, 1) If $s_Filenames = '' Then Return 0 $s_FileArray = StringSplit($s_Filenames, @LF) Return $s_FileArray EndFunc When I run the script I get an error Line 42 (File "\Script"): $n_DirCount[$s_DirCount] = $s_TFile Error: Expected a "=" operator in assignment statement the thing is even in the error box it shows a "=" in the assigment, this is not the first time I've gotten this message I just usually worked around it but I want to understand what I'm doing wrong Link to comment Share on other sites More sharing options...
Iklim Posted November 29, 2007 Share Posted November 29, 2007 Hi, I dont think that autoit appreciate when you try to do array based operation on an integer variable. $n_DirCount[$s_DirCount] here $n_DirCount is an integer. regards. Iklim Link to comment Share on other sites More sharing options...
DW1 Posted November 29, 2007 Share Posted November 29, 2007 This seems to work, all I did was change the array that IKlim was talking about: expandcollapse popup#include<array.au3> $Files = FileFind() _ArrayDisplay($Files) Func FileFind($s_Dir = @ScriptDir, $s_DirDeep = 333333, $s_Mask = '*.*') ;Declaring Variables Dim $s_Dirs[$s_DirDeep] Local $n_DirCount = 0 Local $s_File Local $s_Search Local $s_TFile Local $s_FileArray Local $s_Filenames Local $s_FileCount Local $s_DirCount = 1 Local $s_Msg = 'Error' Local $newarray[2] ;Format Dir if required If StringRight($s_Dir, 1) - '\' Then $s_Dir = StringTrimRight($s_Dir, 1) ;Finding Files $s_Dirs[$s_DirCount] = $s_Dir If Not FileExists($s_Dir) Then Return 0 ;Start Loop While $s_DirCount > $n_DirCount $n_DirCount += 1 $s_Search = FileFindFirstFile($s_Dirs[$n_DirCount] & '\*.*') While 1 $s_File = FileFindNextFile($s_Search) If @error Then ExitLoop If $s_File = '.' Or $s_File = '..' Then ContinueLoop $s_TFile = $s_Dirs[$n_DirCount] & '\' & $s_File If StringInStr(FilegetAttrib($s_TFile), 'D') Then $s_DirCount += 1 ReDim $newarray[UBound($newarray) + 1] $newarray[$s_DirCount] = $s_TFile EndIf WEnd FileClose($s_Search) If StringInStr($s_Mask, ',', 2) Then $s_MaskArray = StringSplit($s_Mask, ',') Else Dim $s_MaskArray[2] = [1, $s_Mask] EndIf For $s_MaskCount = 1 To $s_MaskArray[0] $s_Search = FileFindFirstFile($s_Dirs[$n_DirCount] & '\' & $s_MaskArray[$s_MaskCount]) If $s_Search = -1 Then ContinueLoop While 1 $s_File = FileFindNextFile($s_Search) If @error Then ExitLoop If $s_File = '.' Or $s_File = '..' Then ContinueLoop $s_TFIle = $s_Dirs[$n_DirCount] & '\' & $s_File If Not StringInStr(FileGetAttrib($s_TFile), 'D') Then $s_FileCount += 1 $s_FileNames &= $s_TFile & @LF EndIf WEnd FileClose($s_Search) Next WEnd $s_Filenames = StringTrimRight($s_Filenames, 1) If $s_Filenames = '' Then Return 0 $s_FileArray = StringSplit($s_Filenames, @LF) Return $s_FileArray EndFunc AutoIt3 Online Help Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now