Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2009, 12:16   #1
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
Печаль Процедура поиска - необходимо организовать поиск по маске *.txt в папке Test

Всем привет.
У меня вопрос на счет поиска файлов. Использую для поиска исходный код што разположен ниже. Допусти мне необходимо организовать поиск по маске *.txt в папке Test. Когда маску миняю на:
Код:
FindRes:=FindFirst(Dir+'123.txt',faAnyFile,SR);
То тогда он перестает во вложенных папках искть...
Как ето исправить ?

Сама процедура поиска:
Код:
procedure TForm1.FindFile(Dir: string);
var
  SR: TSearchRec;
  FindRes: Integer;
begin
  FindRes := FindFirst(Dir + '*.*', faAnyFile, SR);
  while FindRes = 0 do
  begin
    if ((SR.Attr and faDirectory) = faDirectory) and
      ((SR.Name = '.') or (SR.Name = '..')) then
    begin
      FindRes := FindNext(SR);
      Continue;
    end;

    if ((SR.Attr and faDirectory) = faDirectory) then
    begin
     
      FindFile(Dir + SR.Name + '\\');
      FindRes := FindNext(SR);
      Continue;
      end;

    ListBox1.Items.Add(SR.Name);
    FindRes := FindNext(SR);
  end;
  FindClose(SR);
end;
Процедура OnClick для кнопки Button1 выглядит:
Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var
dir:string;
SR:TSearchRec;
begin
ListBox1.Clear;
FindFile('C:\Test\');
end;
Вроде все сказал
GvR вне форума Ответить с цитированием
Старый 04.11.2009, 12:20   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
    ListBox1.Items.Add(SR.Name);
перед добавлением, делайте проверку на расширение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.11.2009, 14:00   #3
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
По умолчанию

Можете привести пример? Просто в Delphi я новичок...
GvR вне форума Ответить с цитированием
Старый 04.11.2009, 15:31   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Михалыч, тогда рекурсия не сработает.
Код:
procedure TForm1.FindFile(Dir,ext: string);
var
  SR: TSearchRec;
  FindRes: Integer;
begin
  Ext:=ANSILowerCase(Ext);
  FindRes := FindFirst(Dir + '*.*', faAnyFile, SR);
  while FindRes = 0 do
  begin
    if ((SR.Attr and faDirectory) = faDirectory) and
      ((SR.Name = '.') or (SR.Name = '..')) then
    begin
      FindRes := FindNext(SR);
      Continue;
    end;

    if ((SR.Attr and faDirectory) = faDirectory) then
    begin
     
      FindFile(Dir + SR.Name + '\');
      FindRes := FindNext(SR);
      Continue;
      end;

    if ANSILowerCase(ExtractFileExt(SR.Name))=Ext{по поводу точки не помню...надо ли в расширении писать или нет} then ListBox1.Items.Add(SR.Name);
    FindRes := FindNext(SR);
  end;
  FindClose(SR);
end;
From mihali4:
З.Ы. Я сразу и убрал. Просто невнимательно прочитал первый пост. Пардон
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось mihali4; 04.11.2009 в 16:09.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура поиска нескольких файлов одновременно GvR Общие вопросы Delphi 3 15.11.2009 02:43
Узнать количество *.txt файлов в папке Tomazo Общие вопросы Delphi 3 12.11.2009 20:58
Поиск папки по маске ForzaJuve Общие вопросы Delphi 9 20.06.2009 23:50
организовать систему поиска книг, по названию и по автору torin_gts Помощь студентам 9 30.04.2008 02:36
Поиск По маске CoreFox Общие вопросы Delphi 11 21.02.2008 21:48