B
beckjiang
Unregistered / Unconfirmed
GUEST, unregistred user!
void __fastcall TForm1::Findpath(char * floder)
{
TSearchRec sr;
int index=0;
_WIN32_FIND_DATAA sr1;
char* demp="
";
char* demppathname;
strcpy(demp,floder);
strcat(demp,"*.*"
Char * dirname[1024];
INT i=0;
void* h;
h=FindFirstFileA(demp,&sr1);
while(h)
{
if(sr1.dwFileAttributes==32)
Memo1->Lines->Add(sr1.cFileName);
if(FindNextFileA(h,&sr1)==0)
break;
}
h=FindFirstFileA(demp,&sr1);
while(h)
{
if(sr1.dwFileAttributes==16||sr1.dwFileAttributes==18)
{
if (strcmp(sr1.cFileName,"."!=0&&strcmp(sr1.cFileName,".."!=0)
{
dirname[++i]="
";
strcpy(dirname,floder);
strcat(dirname,sr1.cFileName);
strcat(dirname,"//"
Memo2->Lines->Add(dirname);}
}
if(FindNextFileA(h,&sr1)==0)
break;
}
int j=1;
while(j<=i)
Findpath(*(dirname+j++));
}
为什么只能找到目录下的第一个目录下级目录的第一个下级目录。比如我现在存在这样子一个文件夹。
C:/test 第一级目录有:test1,test2两个目录,在test1目录下有testa.testb.在test2目录下有teste,testd.用这个函数遍历的时候只能找出:C:/test1.C:/test2.C:/test1/testa.这三个目录。dirname在递归的时候值一直都在改变,是不是因为我使用的是指针。是不是不应该使用指针来递归。小弟初学C++ builder有很多地方不懂。请大家帮帮忙。分数虽少,小弟心意重。请大家帮帮忙,小弟感激不尽!谢谢!在线等。
{
TSearchRec sr;
int index=0;
_WIN32_FIND_DATAA sr1;
char* demp="
";
char* demppathname;
strcpy(demp,floder);
strcat(demp,"*.*"
Char * dirname[1024];
INT i=0;
void* h;
h=FindFirstFileA(demp,&sr1);
while(h)
{
if(sr1.dwFileAttributes==32)
Memo1->Lines->Add(sr1.cFileName);
if(FindNextFileA(h,&sr1)==0)
break;
}
h=FindFirstFileA(demp,&sr1);
while(h)
{
if(sr1.dwFileAttributes==16||sr1.dwFileAttributes==18)
{
if (strcmp(sr1.cFileName,"."!=0&&strcmp(sr1.cFileName,".."!=0)
{
dirname[++i]="
";
strcpy(dirname,floder);
strcat(dirname,sr1.cFileName);
strcat(dirname,"//"
Memo2->Lines->Add(dirname);}
}
if(FindNextFileA(h,&sr1)==0)
break;
}
int j=1;
while(j<=i)
Findpath(*(dirname+j++));
}
为什么只能找到目录下的第一个目录下级目录的第一个下级目录。比如我现在存在这样子一个文件夹。
C:/test 第一级目录有:test1,test2两个目录,在test1目录下有testa.testb.在test2目录下有teste,testd.用这个函数遍历的时候只能找出:C:/test1.C:/test2.C:/test1/testa.这三个目录。dirname在递归的时候值一直都在改变,是不是因为我使用的是指针。是不是不应该使用指针来递归。小弟初学C++ builder有很多地方不懂。请大家帮帮忙。分数虽少,小弟心意重。请大家帮帮忙,小弟感激不尽!谢谢!在线等。