<b>用C++Builder遍历文件目录</b>[VC/C++编程]
本文“<b>用C++Builder遍历文件目录</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
操纵C++Builder我们可以轻松地实现近似Windows的Explorer的目录树.OK,Let's go.
我们需求一个TTree和一个TImageList控件.若何得到系统的盘符呢?Borland给我们供应了一个TDriveType类,什么?帮忙里找不到,呵呵,这是实现TDirectoryComboBox用到的一个类,帮忙里当然没有了,它的定义以下:
typedef enum ATTR { atDirectory,atFile} Attr;
struct ITEMPROPERTY
{
Attr ItemAttr;
}ItemProperty;
typedef enum TDRIVETYPE {dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,dtRAM}TDriveType;
那么若何知道这些盘符是软驱是硬盘呢?这就需求用到WinAPI函数GetDriveType了.定义以下:
UINT GetDriveType(LPCTSTR lpRootPathName); 具体内容请大家参考帮忙文档,我就不在这儿迟误大家时间了.最后我们操纵BCB的FindFirst,FindNext等函数便可以实现对目录的遍历了.
下面的两个函数InitDriectoryTree用来得到盘符和它们的属性,BrowseDriectory采取递归法实现对目录的遍历,具体实现以下:
bool __fastcall TForm1::InitDirectoryTree()
{
DriveCount=GetAllDrive();
DriveType=new TDriveType[4];
for(int i=DriveCount;i>0;i--)
{
TTreeNode* Node=DirTree->Items->Item[i];
DriveType[i]=TDriveType(GetDriveType(Node->Text.c_str()));
switch(DriveType[i])
{
case dtFloppy: //软驱
case dtFixed: BrowseDirectory(Node->Text,Node);break;//硬盘
case dtNetwork: BrowseDirectory(Node->Text,Node);break;//网络驱动器
case dtCDROM: //光驱
case dtRAM: BrowseDirectory(Node->Text,Node);break; //内存虚拟盘?不大懂得,大概像Win98启动盘生成的那个E:盘一样
};
}
return true;
//TODO: Add your source code here
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BrowseDirectory(AnsiString Dir, TTreeNode* Node)
{
TSearchRec sr;
TTreeNode* SubNode=Node;
if(FindFirst(Dir+"*.*",faDirectory,sr)==0)
while(1)
{ if(sr.Attr==faDirectory&&sr.Name!="."&&sr.Name!="..")
{
SubNode=DirTree->Items->AddChild(Node,sr.Name);
BrowseDirectory(Dir+sr.Name+"\\",SubNode);
}
if(FindNext(sr)!=0) break;
}
FindClose(sr);
return;
//TODO: Add your source code here
}
//---------------------------------------------------------------------------
以上我们操纵C++Builder实现了对计算机文件系统的拜候,实际上我们可以操纵上面的函数成立一个可以拜候文件系统的VCL控件来替换BCB供应的TDirectoryListbox和TDirectoryComboBox,使你的程序更具有Win9X的气势.
以上是“<b>用C++Builder遍历文件目录</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |