Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FindFirst, FindNext [D6, XP]


webpauk ©   (2007-11-26 15:25:00) 

просматриваю список файлов, папок.
Проблема: не показываются скрытые папки и файлы

procedure TForm1.CreateFileList(sl: TStringList; const FilePath: string);
var
 sr: TSearchRec;
procedure ProcessFile;
begin
 if (sr.Name = '.')or(sr.Name = '..') then exit;
 sl.Add(FilePath + '\' + sr.Name);
 if sr.Attr = faDirectory then CreateFileList(sl, FilePath + '\' + sr.Name);
end;
var
 fPath: String;
begin
 if not DirectoryExists(FilePath) then exit;

 fPath:=FilePath;

 if fPath[Length(fPath)]<> '\' then fPath := fPath + '\';

 if FindFirst(fPath + '*.*', faAnyFile , sr) = 0 then ProcessFile;
 while FindNext(sr) = 0 do ProcessFile;
 FindClose(sr);
end;


Германн   (2007-11-27 01:45:00) [1]


> Не волнуйся, ты прав в ответе на
> > Сергей М. ©   (26.11.07 15:59) [6]
>

Точнее ты прав в том ответе, но только если выбросить слова
> Не совсем так


Германн   (2007-11-27 01:38:00) [2]


> {RASkov}   (26.11.07 19:57) [17]
>
> Что-то я до сих пор не пойму "придирки" в [14] :(
>

Не волнуйся, ты прав в ответе на
> Сергей М. ©   (26.11.07 15:59) [6]

Но [6] есть ответ на [4], который не решает сабж.
А правильное решение сабжа настоятельно предполагает использование оператора in.


{RASkov}   (2007-11-26 19:57:00) [3]

> [16] Anatoly Podgoretsky ©   (26.11.07 19:37)
> А то что могут быть и оба и даже более.

Ну и "в пролете" эти файлы.... именно так же как и директории в [0] т.е. нет рекурсии из-за этого...
Поэтому - либо так, либо эдак, но никак не вместе или с чем нибудь :)
Что-то я до сих пор не пойму "придирки" в [14] :(


Anatoly Podgoretsky   (2007-11-26 19:37:00) [4]

> {RASkov}  (26.11.2007 19:13:15)  [15]

А то что могут быть и оба и даже более.


{RASkov}   (2007-11-26 19:13:00) [5]

> [14] Anatoly Podgoretsky ©   (26.11.07 19:00)

Как это никаких???
Для выполнения условия файл должен иметь один(!) установленный атрибут (либо faDirectory, либо faHidden)...
даже скрытая директория не проходит условие :)
if (sr.Attr = faDirectory) or (sr.Attr = faHidden)  then
:о)...Бр.


Anatoly Podgoretsky   (2007-11-26 19:00:00) [6]

> {RASkov}  (26.11.2007 16:06:07)  [7]

Никаких либо


Dennis I. Komarov   (2007-11-26 17:38:00) [7]


> А что, можно думать иначе?

> А, нужнодумать иначе?


авыф   (2007-11-26 17:29:00) [8]

delphimaster = FastAdvancedDelphiHelp
А что, можно думать иначе?


Dennis I. Komarov   (2007-11-26 16:38:00) [9]

> [10] Riply ©   (26.11.07 16:31)

Ну как будто первый раз тут :)


Riply   (2007-11-26 16:31:00) [10]

> [8] Dennis I. Komarov ©   (26.11.07 16:06)
> Справки нету.
Это как это ?
Нет серьезно интересно: кто, как и главное зачем(?!) ставит Delphi без Help`а ?


{RASkov}   (2007-11-26 16:14:00) [11]

> Не совсем так, а либо толькодиректория либо толькос атрибутом скрытый.....

т.е. например если файл имеет атрибуты скрытый и только для чтения, то он уже сюда
(sr.Attr = faHidden)
"не прокатит", хотя скрытым его считать можно )


Dennis I. Komarov   (2007-11-26 16:06:00) [12]

> [5] Сергей М. ©   (26.11.07 15:56)


> [6] Сергей М. ©   (26.11.07 15:59)

Справки нету, вот и тычим куда придется, авось заработает.


{RASkov}   (2007-11-26 16:06:00) [13]

> [4] webpauk ©   (26.11.07 15:53)

Так не проверяется...
нужно так:
if Attr and faXxxx = faXxxx then....

Это я увидел в твоем коде такую ошибку с директориями....

А поиск файлов задается вторым параметром в FindFirst, т.е. в твоем случае (faAnyFile) искать любые файлы

> [6] Сергей М. ©   (26.11.07 15:59)
> означает
>
> Если это директория или скрытый файл тогда ???

Не совсем так, а либо только директория либо только с атрибутом скрытый.....
:)


Сергей М.   (2007-11-26 15:59:00) [14]

if (sr.Attr = faDirectory) or (sr.Attr = faHidden)  then ???

означает

Если это директория или скрытый файл тогда ???


Сергей М.   (2007-11-26 15:56:00) [15]


> webpauk ©   (26.11.07 15:53) [4]


Не-а ..

В справке ведь даже пример есть, почему бы не изучить его ?


webpauk   (2007-11-26 15:53:00) [16]

if (sr.Attr = faDirectory) or (sr.Attr = faHidden)  then ???


Сергей М.   (2007-11-26 15:51:00) [17]

Как это где ?

В проверке флагов, содержащихся в поле sr.Attr, где же еще)


webpauk   (2007-11-26 15:48:00) [18]


> Сергей М. ©   (26.11.07 15:44) [1]

насчет буратины пропустим...
где указать?


Сергей М.   (2007-11-26 15:44:00) [19]

А где ты указал, что они тебя интересуют ?
Нигде.
Потому и ССЗБ)


Наверх

Титульная страница Поиск, карта сайта Написать письмо