SET ASSERTS ON CLEAR ? FileSearch([c:\],[abc.ini]) FUNCTION FileSearch(lcFolder,lcFileName) IF FILE(lcFileName) RETURN FULLPATH(lcFileName) && If the file is in the VFP internal search path why we should bother? Just return it ENDIF LOCAL lnFiles, laFiles, lnFor, laFiles[1] IF TYPE([lcFileFind]) == [C] AND NOT EMPTY(lcFileFind) RETURN lcFileFind ENDIF IF TYPE([lcFileFind]) == [U] PRIVATE lcFileFind ENDIF lcFileFind = [] lnFiles = ADIR(laFiles,lcFolder+[*.*],[HSD]) FOR lnFor = 1 TO lnFiles IF (laFiles[lnFor,1] == [.] OR; laFiles[lnFor,1] == [..]) AND; [D] $ laFiles[lnFor,5] LOOP ENDIF IF [D] $ laFiles[lnFor,5] AND EMPTY(lcFileFind) lcFileFind = FileSearch(lcFolder+ADDBS(laFiles[lnFor,1]),lcFileName) ENDIF IF NOT EMPTY(lcFileFind) EXIT ENDIF NEXT IF EMPTY(lcFileFind) DIMENSION laFiles[1] lnFiles = ADIR(laFiles,lcFolder+lcFileName,[HS]) IF lnFiles # 0 ASSERT .f. lcFileFind = lcFolder+lcFileName ENDIF ENDIF RETURN lcFileFind