void __fastcall TForm_PrjPreView::BitBtnOKClick(TObject *Sender)
{
String tempstr=ExtractFilePath(Application->ExeName);
String ReturnName=Edit_PjoNewName->Text.Trim();
String ProjectFile=tempstr+"Project\\"+ReturnName;
LabelError->Visible=false;
ProgressBarLoding->Visible=false;
ProgressBarLoding->Position=0;
LabelError->Caption="";
if (DirectoryExists(ProjectFile))
{
LabelError->Visible=true;
LabelError->Caption="此项目名称已经存在,请更换项目名称!" ;
return ;
}
CreateDir(ProjectFile);
String TemplateFile=tempstr+"Template\\"+UseTypeName+"\\"+UsePrjName;
this->Enbaled=false;
ProgressBarLoding->Visible=true;
Application->ProcessMessages();
int AllFileCount=0;
int OnCopyCount=0;
GetFileCount(AllFileCount,TemplateFile);
ProgressBarLoding->Position=0;
ProgressBarLoding->Max=AllFileCount;
CopyAllFile(OnCopyCount,TemplateFile,ProjectFile);
FormProjectMain->ProName=ReturnName;
FormProjectMain->ModalResult=mrOk;
}
void __fastcall TForm_PrjPreView::GetFileCount(int &FlieConut,String FileName)
{
HANDLE hFile = NULL;
WIN32_FIND_DATA fd = {0};
FileName+="\\*.*";
hFile = ::FindFirstFile(FileName.c_str(), &fd);
if(hFile != INVALID_HANDLE_VALUE)
{
do
{
bool temp=fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY;
if(temp)
{
if (AnsiString(fd.cFileName)==".")
{
continue;
}
if (AnsiString(fd.cFileName)=="..")
{
continue;
}
char UseFileName[500];
StrCopy(UseFileName,fd.cFileName);
String Parerntstr1=FileName+"\\"+AnsiString(fd.cFileName);
GetFileCount(FlieConut,Parerntstr1.c_str());
}
else
{
FlieConut++;
}
}while(FindNextFile(hFile, &fd));
FindClose(hFile);
hFile = NULL;
}
}
void __fastcall TForm_PrjPreView::CopyAllFile(int &FlieConut,String FileName,String DstFileName)
{
HANDLE hFile = NULL;
WIN32_FIND_DATA fd = {0};
String UseFile=FileName+"\\*.*";
hFile = ::FindFirstFile(UseFile.c_str(), &fd);
if(hFile != INVALID_HANDLE_VALUE)
{
do
{
bool temp=fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY;
if(temp)
{
if (AnsiString(fd.cFileName)==".")
{
continue;
}
if (AnsiString(fd.cFileName)=="..")
{
continue;
}
char UseFileName[500];
StrCopy(UseFileName,fd.cFileName);
String Parerntstr1=FileName+"\\"+AnsiString(fd.cFileName);
String Parerntstr2=DstFileName+"\\"+AnsiString(fd.cFileName);
if (!DirectoryExists(Parerntstr2))
{
CreateDir(Parerntstr2);
}
CopyAllFile(FlieConut,Parerntstr1,Parerntstr2);
}
else
{
String L_str=FileName+"\\"+AnsiString(fd.cFileName);
String D_str=DstFileName+"\\"+AnsiString(fd.cFileName);
CopyFile(L_str.c_str(),D_str.c_str(),false);
FlieConut++;
ProgressBarLoding->Position=FlieConut;
Application->ProcessMessages();
}
}while(FindNextFile(hFile, &fd));
FindClose(hFile);
hFile = NULL;
}
}
工作中的一个项目用到的, 需要一个文件夹复制到另一个文件夹中。代码很简单就不写注释 了。包含递归调用。。