HI Leute! Ich habe mich mal im WWW auf die suche nach einem Source gemacht um Dateien zu suchen, und auch was gefunden. Kann mir vielleicht jemand sagen, wieso dieser Source nicht funktioniert?
Wäre echt nett!!
Tobias
<br>
<b> void __fastcall FindAllFiles(TStringList *FileList,
String sSearchRoot, String sMask) <b>
<br>
{
<br>
TStringList *Dirs = NULL; //the subfolders of this folder
<br>
int Counter;
<br>
String Tempry;
<br>
TSearchRec Found;
<br>
try
{//outer catch
<br>
try
<br>
{//finally wrapper around Dirs
<br>
Dirs = new TStringList;
<br>
Dirs->Sorted = true;
<br>
Dirs->Duplicates = dupIgnore;
<br>
//now search this folder
<br>
Tempry = sSearchRoot + sMask;
<br>
try
<br>
{//finally wrapper around found
<br>
if(FindFirst(Tempry, faAnyFile, Found) == 0)
<br>
{
<br>
CheckAndAdd(sSearchRoot, Dirs,
FileList, sMask, Found);
<br>
while(FindNext(Found) == 0)
<br>
{
<br>
CheckAndAdd(sSearchRoot, Dirs,
FileList, sMask, Found);
<br>
}//end while
<br>
} //end if
<br>
}//end wrapper Found, try
<br>
__finally
<br>
{
<br>
FindClose(Found);
<br>
}//end wrapper Found, finally
<br>
//Now search each subfolder within this
<br>
Counter = Dirs->Count;
<br>
for(int x = 0; x < Counter; x++)
<br>
{
<br>
FindAllFiles(FIleList, Dirs->Strings[x], sMask);
<br>
}
<br>
}//end wrapper Dirs, try
<br>
__finally
<br>
{
<br>
if(Dirs)
<br>
delete Dirs;
<br>
}//end wrapper Dirs, finally
<br>
}//end outer try
<br>
catch(Exception &E)
{
<br>
throw;
<br>
}//end outer catch
<br>
}
<br>
<b>void __fastcall CheckAndAdd(String sSearchRoot, TStringList *sDirs,
TStringList *sFileList, String sMask,
TSearchRec &sFound)<b>
<br>
{
<br>
try
<br>
{
<br>
if((sFound.Name[1] != '.') && (sFound.Attr & faDirectory) > 0))
<br>
sDirs->Add(sSearchRoot + sFound.Name); //it's a folder
<br>
else //is it a file matching our mask
<br>
{
<br>
if(MatchesMask(sFound.Name, sMask)
<br>
FileList->Add(sSearchRoot + Found.Name);
<br>
}
<br>
}
<br>
catch(Exception &E)
<br>
{
<br>
throw;
<br>
}
<br>
}
Wäre echt nett!!
Tobias
<br>
<b> void __fastcall FindAllFiles(TStringList *FileList,
String sSearchRoot, String sMask) <b>
<br>
{
<br>
TStringList *Dirs = NULL; //the subfolders of this folder
<br>
int Counter;
<br>
String Tempry;
<br>
TSearchRec Found;
<br>
try
{//outer catch
<br>
try
<br>
{//finally wrapper around Dirs
<br>
Dirs = new TStringList;
<br>
Dirs->Sorted = true;
<br>
Dirs->Duplicates = dupIgnore;
<br>
//now search this folder
<br>
Tempry = sSearchRoot + sMask;
<br>
try
<br>
{//finally wrapper around found
<br>
if(FindFirst(Tempry, faAnyFile, Found) == 0)
<br>
{
<br>
CheckAndAdd(sSearchRoot, Dirs,
FileList, sMask, Found);
<br>
while(FindNext(Found) == 0)
<br>
{
<br>
CheckAndAdd(sSearchRoot, Dirs,
FileList, sMask, Found);
<br>
}//end while
<br>
} //end if
<br>
}//end wrapper Found, try
<br>
__finally
<br>
{
<br>
FindClose(Found);
<br>
}//end wrapper Found, finally
<br>
//Now search each subfolder within this
<br>
Counter = Dirs->Count;
<br>
for(int x = 0; x < Counter; x++)
<br>
{
<br>
FindAllFiles(FIleList, Dirs->Strings[x], sMask);
<br>
}
<br>
}//end wrapper Dirs, try
<br>
__finally
<br>
{
<br>
if(Dirs)
<br>
delete Dirs;
<br>
}//end wrapper Dirs, finally
<br>
}//end outer try
<br>
catch(Exception &E)
{
<br>
throw;
<br>
}//end outer catch
<br>
}
<br>
<b>void __fastcall CheckAndAdd(String sSearchRoot, TStringList *sDirs,
TStringList *sFileList, String sMask,
TSearchRec &sFound)<b>
<br>
{
<br>
try
<br>
{
<br>
if((sFound.Name[1] != '.') && (sFound.Attr & faDirectory) > 0))
<br>
sDirs->Add(sSearchRoot + sFound.Name); //it's a folder
<br>
else //is it a file matching our mask
<br>
{
<br>
if(MatchesMask(sFound.Name, sMask)
<br>
FileList->Add(sSearchRoot + Found.Name);
<br>
}
<br>
}
<br>
catch(Exception &E)
<br>
{
<br>
throw;
<br>
}
<br>
}
Comment