//Текст заголовочного файла "_scanfolder.h"
#ifndef scanfolderH
#define scanfolderH
#include <dir.h>
//---------------------------------------------------------------------------
class CScanFolder : public ffblk
{
private: // User declarations
int Find;
public:
__fastcall CScanFolder(const char *FileName="*.*",int Attr = 0){
Find=findfirst(FileName, this, Attr);
}
operator const char*(){
return Find ? 0: ff_name;
}
int operator++(int){
return(Find=findnext(this));
}
int operator++(){
return operator++(0);
}
__fastcall ~CScanFolder(void){
findclose(this);
//ShowMessage(String(ff_name));
};
};
#endif
Нужен код перебора каталогов и файлов
Нужен код для перебора каталогов с подкаталогами и файлов в них. У кого есть - киньте пожалуйста на [email]po_saa@mail.ru[/email].... ну просто лениво ... :)
Код:
Код:
#include "_scanfolder.h"
//Например, вы хотите опросить текущий
//каталог и считать имена всех файлов с расширением
//*.cpp в ListBox1.
void __fastcall TfrmMain::Button1Click(TObject *)
{
AnsiString Mask = "*.cpp";
for(CScanFolder SF((char*)Mask.c_str(), 0);SF;SF++)
ListBox1->Items->Add(AnsiString(SF));
}
//Например, вы хотите опросить текущий
//каталог и считать имена всех файлов с расширением
//*.cpp в ListBox1.
void __fastcall TfrmMain::Button1Click(TObject *)
{
AnsiString Mask = "*.cpp";
for(CScanFolder SF((char*)Mask.c_str(), 0);SF;SF++)
ListBox1->Items->Add(AnsiString(SF));
}
Код:
//главную форму приложения назовем frmMain
//положим на нее компонент TTreeView
//положим на нее компонент TImageList, в который засунем иконки
//папок - открытой и закрытой.
//объявляем метод BuildTree(TTreeView *Tree, TTreeNode * Node, const AnsiString Path)
//первый парметр это то дерево в котором мы хотим отобразить структуру папок
//второй - узел дерева к которому мы будем пристраивить свой куст
//третий - абсолютный путь к папки, структуру котрой мы хотим отобразить.
int __fastcall TfrmMain::BuildTree(TTreeView *Tree, TTreeNode * Node, const AnsiString Path)
{
AnsiString Mask = Path + slash +"*.*";
AnsiString Ext;
Tree->Items->BeginUpdate();
TTreeNode *sNode;
for(CScanFolder SF((char*)Mask.c_str(), FA_DIREC);SF;SF++){
if(AnsiString(SF)!="."&&AnsiString(SF)!=".."){
if(IsFolder(Path + AnsiString(SF))){
sNode = Tree->Items->AddChild(Node, SnipExt(AnsiString(SF)));
sNode->ImageIndex = 0;
sNode->SelectedIndex = 1;
}
if(IsFolder(Path + AnsiString(SF)))
BuildTree(Tree, sNode, Path + AnsiString(SF)+"\\");
}
}
Tree->Items->EndUpdate();
return 1;
}
//положим на нее компонент TTreeView
//положим на нее компонент TImageList, в который засунем иконки
//папок - открытой и закрытой.
//объявляем метод BuildTree(TTreeView *Tree, TTreeNode * Node, const AnsiString Path)
//первый парметр это то дерево в котором мы хотим отобразить структуру папок
//второй - узел дерева к которому мы будем пристраивить свой куст
//третий - абсолютный путь к папки, структуру котрой мы хотим отобразить.
int __fastcall TfrmMain::BuildTree(TTreeView *Tree, TTreeNode * Node, const AnsiString Path)
{
AnsiString Mask = Path + slash +"*.*";
AnsiString Ext;
Tree->Items->BeginUpdate();
TTreeNode *sNode;
for(CScanFolder SF((char*)Mask.c_str(), FA_DIREC);SF;SF++){
if(AnsiString(SF)!="."&&AnsiString(SF)!=".."){
if(IsFolder(Path + AnsiString(SF))){
sNode = Tree->Items->AddChild(Node, SnipExt(AnsiString(SF)));
sNode->ImageIndex = 0;
sNode->SelectedIndex = 1;
}
if(IsFolder(Path + AnsiString(SF)))
BuildTree(Tree, sNode, Path + AnsiString(SF)+"\\");
}
}
Tree->Items->EndUpdate();
return 1;
}
Код:
void __fastcall TfrmMain::Button1Click(TObject *)
{
BuildTree(TreeView1, NULL, "C:\\"); //этот вызов нарисует всю структуру диска С:
}
{
BuildTree(TreeView1, NULL, "C:\\"); //этот вызов нарисует всю структуру диска С:
}
Оригинальный источник: http://borland.xportal.ru/forum/viewtopic.php?t=1498&highlight=cscanfolder
Мона на них глянуть
Мона на них глянуть[/QUOTE]
Самописные. Думаю не будет стоить труда написать свои, например так:
Код:
bool IsFolder(AnsiString fName)
{
if (GetFileAttributes(fName.c_str()) == FILE_ATTRIBUTE_DIRECTORY) return true;
return false;
}
{
if (GetFileAttributes(fName.c_str()) == FILE_ATTRIBUTE_DIRECTORY) return true;
return false;
}
Код:
AnsiString SnipExt(AnsiString fName)
{
return fName.SubString(0,fName.Length()-ExtractFileExt(fName).Length());
}
{
return fName.SubString(0,fName.Length()-ExtractFileExt(fName).Length());
}
ясно спасибо