*============================================================================== * Program: CHECKFORUNUSEDCODE.PRG * Purpose: Make a list of unused files in a project's folders * From: Practical Tips for Working with Existing Code * Copyright: (c) 2007, Tamar E. Granor, Ph.D. * Last revision: 02/27/07 *============================================================================== LPARAMETERS cProject, cPath * Look for unused code LOCAL oProject, nCounter, oFile LOCAL nDirs, nDir, aDirs[1] MODIFY PROJECT (m.cProject) nowait oProject = _VFP.ActiveProject * First, make a list of all files in project LOCAL aProjFiles[oProject.Files.Count] nCounter = 0 FOR EACH oFile IN oProject.Files nCounter = m.nCounter + 1 aProjFiles[m.nCounter] = UPPER(oFile.Name) ENDFOR CREATE CURSOR Unused (mFileName M) * Now traverse directories * First, make a list of directories nDirs = ALINES(aDirs, m.cPath, 1, ";", ",") CREATE CURSOR DirsToCheck (mDirName M) FOR nDir = 1 TO m.nDirs INSERT INTO DirsToCheck VALUES (FULLPATH(aDirs[m.nDir])) ENDFOR LOCAL aFiles[1], cOldDir, cFile, nFilesToCheck, cExt cOldDir = SET("Default") + CURDIR() SCAN IF DIRECTORY(mDirName) CD ALLTRIM(mDirName) nFilesToCheck = ADIR(aFiles, "*.*") FOR nFile = 1 TO m.nFilesToCheck cFile = aFiles[m.nFile, 1] cExt = JUSTEXT(m.cFile) IF INLIST(cExt, "PRG", "SCX", "MNX", "FRX", "VCX", "QPR") IF ASCAN(aProjFiles, FORCEPATH(m.cFile, ALLTRIM(mDirName)), -1, -1, 1, 7) = 0 INSERT INTO Unused VALUES (FORCEPATH(m.cFile, DirsToCheck.mDirName)) ENDIF ENDIF ENDFOR ENDIF ENDSCAN CD (m.cOldDir) * Put results into clipboard for easy management _ClipText = "" SELECT Unused SCAN _ClipText = _ClipText + ALLTRIM(mFileName) + CHR(13) + CHR(10) ENDSCAN RETURNTamar