代码有点不明白
从网上找到这段查找目录下文件的代码,有两个地方不明白,
- C/C++ code
void TForm1::Direct(const String &path){ int k = 0; k |= faAnyFile; TSearchRec r; if( Sysutils::DirectoryExists(path)) { //判断目录是否已经存在 if(FindFirst(path+"\\*.*",k,r) == 0) { while(FindNext(r)==0) { if(r.Name=="."||r.Name==".."||r.Name=="...") { mmo1->Lines->Add(path);//得到文件夹 continue; } int k1 = 0; k1 |= faAnyFile; TSearchRec r1; //递归 if(r1.Name=="."||r1.Name==".."||r1.Name=="...") continue; String path1 = path+"\\"+r.Name; if(FindFirst(path+"\\"+r.Name+"\\*.*",k1,r1) == 0) Direct(path1); mmo1->Lines->Add(path+"\\"+r.Name );//得到文件名 } FindClose(r); } } }一个是为什么要这样赋值 : k |= faAnyFile; k本来就已经是0了;
二是 if(r.Name=="."||r.Name==".."||r.Name=="...") 这个“.”代表的是什么呢?
[解决办法]
k |= faAnyFile是习惯问题, 如果再有一个类型, 就必须这么写了
"."和".."是代表当前和上级目录, 这个不是真正目录, 略过.
"..."目录没有
[解决办法]
我觉得也是习惯问题
[解决办法]
k |= faAnyFile 是给比特变量赋值的写法,这样写或等,可以最大可能的保留原k的位值。
[解决办法]
"...",这是一个不存在或是不正确的目录名