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

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

FindFirst файлы и папки [D7, WinXP]


Redlord ©   (2004-12-24 21:57:00) 

всем привет
народ можноли настроить функцию FindFirst чтоб она выдавала
папки И файлы определенного типа, например EXE .
используя ниже приведенный пример я получаю тока файлы

if FindFirst(s+'*.exe', faDirectory, sr) = 0 then
...


Anatoly Podgoretsky   (2004-12-25 11:48:00) [1]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N158


Sun bittern   (2004-12-25 10:19:00) [2]

begin...end ©   (25.12.04 10:17) [13]

Каюсь, грешен :)


begin...end   (2004-12-25 10:17:00) [3]

> [12] Sun bittern ©   (25.12.04 10:12)

+ FindClose.


Sun bittern   (2004-12-25 10:12:00) [4]

Файлы и папки по маске

Procedure SearchDir(Path, Mask: String;  SearchSubDir:Boolean; SearchList: TStrings);
 var
   FSearchRec, DSearchRec: TSearchRec;
   FindResult: Integer;

 function IsDirNotation(ADirName: String): Boolean;
 begin
   Result := (ADirName = '.') or (ADirName = '..');
 end;

Begin
 FindResult := FindFirst(Path + Mask, faAnyFile + faDirectory, FSearchRec);

 while FindResult = 0 do
 begin
   SearchList.Add(Path + FSearchRec.Name);
   FindResult := FindNext(FSearchRec);
 end;

 if SearchSubDir then
   FindResult := FindFirst(Path + '*.*', faDirectory, DSearchRec);
   while FindResult = 0 do
   begin
     if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
     IsDirNotation(DSearchRec.Name) then
       SearchList.Add(Path + DSearchRec.Name);
     FindResult := FindNext(DSearchRec);
   end;
end;


Fay   (2004-12-25 04:05:00) [5]

2 All
if FindFirst(s+'*.exe', faDirectory, sr) = 0 then
Кому-нибудь ещё удалось так найти только папки?


SergP   (2004-12-25 02:07:00) [6]


>  Redlord   (24.12.04 21:57)
> всем привет
> народ можноли настроить функцию FindFirst чтоб она выдавала
> папки И файлы определенного типа, например EXE .


Ищи тогда 2 раза отдельно. Один раз  - папки, дркгой раз экзешники.


olookin   (2004-12-25 02:04:00) [7]

[8] redlord   (25.12.04 01:56)

У меня директории показывались в поиске...


redlord   (2004-12-25 01:56:00) [8]

как ето через if зделать я знаю а можноли в атрибутах FindFirst ?
а строка
FindFirst(Path + '\*.*', faAnyFile + faDirectory, SearchRec);
покажет тока файлы !!


olookin   (2004-12-24 23:13:00) [9]

[6] Sun bittern ©   (24.12.04 22:38)

Я ничего не указывал... Директории и так находятся... По моему...


Sun bittern   (2004-12-24 22:38:00) [10]

olookin ©   (24.12.04 22:26) [5]

Указать в атрибутах файла
FindFirst(Path + '\*.*', faAnyFile + faDirectory, SearchRec);


olookin   (2004-12-24 22:26:00) [11]

[4] Sun bittern ©   (24.12.04 22:25)

?


Sun bittern   (2004-12-24 22:25:00) [12]

faDirectory?


olookin   (2004-12-24 22:13:00) [13]

В этом коде жирным выделены папки. Так по крайней мере я думаю...

procedure TForm1.Scan(Path: Ansistring);
var SearchRec: TSearchRec;
   s: string;
   r,a: Ansistring;
begin
 FindFirst(Path+'\*.*',faAnyFile,SearchRec);
 while FindNext(SearchRec)=0 do begin
 s:='*'+LowerCase(ExtractFileExt(Path+'\'+SearchRec.Name));
 if ( s<>'*') and ( s<>'*.') and (s='*.mp3') then begin
Inc(xx);
  end;
 if (SearchRec.Attr and faDirectory=faDirectory) and
 (SearchRec.Name[1]<>'.') then Scan(Path+'\'+SearchRec.Name); end;
 FindClose(SearchRec);
end;


Redlord   (2004-12-24 22:11:00) [14]

две звезды ето все файлы а надо тока EXE


olookin   (2004-12-24 22:08:00) [15]

Папки кажется маркируются как '*.*'. Можно в общем...


Наверх

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