Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

FindFirst, FindNext   Найти похожие ветки 

 
webpauk ©   (2007-11-26 15:25) [0]

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

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-26 15:44) [1]

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


 
webpauk ©   (2007-11-26 15:48) [2]


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

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


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

Как это где ?

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


 
webpauk ©   (2007-11-26 15:53) [4]

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


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


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


Не-а ..

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


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

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

означает

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


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

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

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

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

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

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

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


 
Dennis I. Komarov ©   (2007-11-26 16:06) [8]

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


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

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


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

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

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


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

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


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

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

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


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

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


 
Dennis I. Komarov ©   (2007-11-26 17:38) [13]


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

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


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

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

Никаких либо


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

> [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:37) [16]

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

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


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

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

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


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


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

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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
5-1164374303
IDenS
2006-11-24 16:18
2007.12.23
Как поменять значение property в уже созданных компонентах?


15-1195576902
ferr
2007-11-20 19:41
2007.12.23
Random in .net


2-1196426968
webpauk
2007-11-30 15:49
2007.12.23
Папка верхнего уровня


2-1196144972
Мистик
2007-11-27 09:29
2007.12.23
Сохранить аттач с руским именем из idmessage


3-1187120241
Anti
2007-08-14 23:37
2007.12.23
Как создать генератор