Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Zmey Гость
|
Добавлено: Вт Мар 19 2002 10:20 Заголовок сообщения: Поиск файлов |
|
|
Помогите, с помощью какой функции можно получить список файлов из директории и включенных в нее поддиректорий не указывая конкретно каждую поддиректориию. Типа: q:string;//имя файла с путем q:=функция('C:\'); listbox.items.add(q); |
|
Вернуться к началу |
|
|
Mike
Зарегистрирован: 17.11.2001 Сообщения: 339 Откуда: ekb
|
Добавлено: Вт Мар 19 2002 12:51 Заголовок сообщения: Re: Поиск файлов |
|
|
Нет такой функции, ручками придется написать, посмотри функции VCL: FindFirst, FingNext ... |
|
Вернуться к началу |
|
|
IL
Зарегистрирован: 21.05.2002 Сообщения: 19 Откуда: Ryazan
|
Добавлено: Вт Мар 19 2002 13:34 Заголовок сообщения: Re: Поиск файлов |
|
|
Лови
//------------------------------------------------------------.. #pragma hdrstop #include #include #include
//----------------------------------------------------------------.. findFile(TStringList *list, char *dir,char *mask) { struct ffblk ffblk; char puth[256]; int done; int attrib = FA_DIREC|FA_ARCH; //FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH;
strcpy(puth,dir); strcat(puth,mask); done = findfirst(puth,&ffblk,attrib); while (!done) { if (ffblk.ff_attrib == FA_DIREC) { if (!strcmp(ffblk.ff_name,".") || !strcmp(ffblk.ff_name,"..")) { } else { strcpy(puth,dir); strcat(puth,ffblk.ff_name); strcat(puth,"\\"); findFile(list,puth,mask); } } else { strcpy(puth,dir); strcat(puth,ffblk.ff_name); list->Add(puth); } done = findnext(&ffblk); } }
#pragma argsused int main(int argc, char* argv[]) { TStringList *list = new(TStringList); char *dir = "c:\winnt\\"; char *mask = "*.*";
findFile(list,dir,mask); for ( int i = 0; i Count; i++) printf("%s\n",list->Strings[i].c_str()); delete list; getch(); return 0; } |
|
Вернуться к началу |
|
|
Savage
Зарегистрирован: 19.03.2002 Сообщения: 2 Откуда: Ярославль
|
Добавлено: Вт Мар 19 2002 17:14 Заголовок сообщения: Re: Поиск файлов |
|
|
Думаю вот это поможет...
procedure GetDirCont(Path: String; var FilesList: TStringList); var SrRec: TSearchRec; FilesPath, FilesName: String; begin FilesPath := Path; if FilesPath[Length(FilesPath)]'\' then FilesPath:=FilesPath+'\'; FilesName:=FilesPath + '*.*'; FilesList.Clear; if FindFirst(FilesName, faAnyFile, SrRec) = then begin repeat if (SrRec.Name'.') and (SrRec.Name'..') then if (SrRec.Attr or faDirectory) = SrRec.Attr then begin FilesList.Add('\' + SrRec.Name); end else begin FilesList.Add(SrRec.Name); end; until FindNext(SrRec) 0; FindClose(SrRec); end; end; |
|
Вернуться к началу |
|
|
|