C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как вывести весь список файлов и директорий., Как вывести весь список файлов и директо
Guest
Отправлено: 29.03.2005, 10:08


Не зарегистрирован







Помогите со сканером дисков.
Нужно чтотобы сканер сканировал любой диск и в окне просматривалось всё содержимое диска (все дириктории с потдиректориями и файлами).

скиньте кто нибуди исходник. sad.gif
Guest
Отправлено: 29.03.2005, 10:26


Не зарегистрирован







CODE

Как обойти дерево каталогов
где то там
slist->Clear();
ListFiles("C:\\", slist);

#include "stdio.h"
void ListFiles(AnsiString path, TStrings* List)
{
TSearchRec sr;

FILE *fp;
char szBuffer[256];
AnsiString SearchText;

for (int ferr = FindFirst(path+"*.*", faAnyFile, sr); ferr == 0; ferr=FindNext(sr))
{ if (sr.Attr & faDirectory)
{ if (sr.Name == "." ) continue;
else if (sr.Name == "..") continue;
else ListFiles(path+sr.Name+"\\",List);
continue;
} // faDirectory

// блок "один файл"
List->Add(ExtractFileName(sr.Name));
} // for i = 0

FindClose(sr);
}

В зависимости от поставленной задачи блок "один файл" имеет различные варианты


Отредактировано AVC — 29/03/2005, 09:27
Gal
Отправлено: 29.03.2005, 11:55


Станционный диспетчер

Группа: Участник
Сообщений: 124



Я думаю, что вместо for надо поставить
do
...
while(FindNext(sr) == 0);
Guest
Отправлено: 29.03.2005, 13:06


Не зарегистрирован







QUOTE

Я думаю, что вместо for надо поставить
do
...
while(FindNext(sr) == 0);


Мотивируйте.

Синтаксис конструкции for позволяет записать несколько операций прямо инструкцию. Удобно.
Konstantine
Отправлено: 29.03.2005, 15:40


Мастер участка

Группа: Модератор
Сообщений: 545



да синтаксис языка С позволяет напписать извращенство и почище этого.... компилятору пофиг — он железный, а вот программеру читать этот текст, причём хотя бы тот кому вы этот код дали разобраться, будет ой как нелегко.
поэтому всё-таки придерживайтесь классических конструкций

Вернуться в Вопросы программирования в C++Builder