0 / 0 / 3
Регистрация: 01.09.2012
Сообщений: 35

Рекурсивный Поиск файлов

20.11.2012, 22:07. Показов 4463. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток, я к вам со следующей проблемой: необходимо разобраться с рекурсивным поиском файлов на всем компьютере желательно, но пока хотя бы с локальным в конкретно заданной директории и вложенных в нее директориях... и так до скончания вложенных папок. Погуглив на подобные темы я наткнулся на пока что непонятное WinApi и http://www.kansoftware.ru/?tid=1721 вроде бы все понятно и не особо сложно и даже код прилагается, но после его проверки я расстроился, так как он не совсем рабочий.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.FindFile(Dir: string);
var
  SR: TSearchRec;
  FindRes: Integer;
begin
  FindRes := FindFirst(Dir + '*.exe', 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
      ShowMessage(Dir + SR.Name);
      FindFile(Dir + SR.Name );
      FindRes := FindNext(SR);
      Continue;
    end;
 
    ListBox1.Items.Add(SR.Name);
    FindRes := FindNext(SR);
  end;
  FindClose(SR);
end;;
Не срабатывает условие перехода поиска во вложенную папку и я не могу понять почему. Подскажите пожалуйста в чем ошибка.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2012, 22:07
Ответы с готовыми решениями:

Рекурсивный поиск файлов по заданным атрибутам
Здравствуйте. У меня возникла проблема. Не получается сделать так, чтобы программа к примеру, искала файлы только по заданным атрибутам....

Рекурсивный поиск
Собственно нашёл код Procedure ScanDir(StartDir: String; Mask:string; List:TStrings); { Процедура выводит список директории в...

Рекурсивный поиск. Снова
Добрый день. Тема эта избита, знаю, но тем не менее, ответа на свой вопрос я здесь не нашел (или не узрел). итак, есть рекурсивный поиск....

2
angstrom
20.11.2012, 22:32
Конечно указанная строка не будет работать, так как по первой проверке идёт continue.

Вот простой пример:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure FindFiles(const Path : String);
var
  SR  : TSearchRec;
  Ext : String;
begin
  if FindFirst(ExpandFileName(Path + '\*.*'), faAnyFile, SR) = 0 then
  try
    repeat
      if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then
        FindFiles(ExpandFileName(Path + '\' + SR.Name))
      else if (SR.Name[1] <> '.') then
        ListBox1.Items.Add(SR.Name);
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
0 / 0 / 3
Регистрация: 01.09.2012
Сообщений: 35
08.12.2012, 18:14  [ТС]
продолжаю с этим заморачиваться. уже облегчил конструкцию, на мой взгляд, до максимума :
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button2Click(Sender: TObject);
var
  sr:TSearchRec;
begin
   lst2.Clear;
   dir:='c:\program files\';
   if FindFirst(dir+'Новая папка', faDirectory, sr)=0 then
  repeat
     Application.ProcessMessages;
     If (Sr.Attr and faDirectory) > 0 then
     begin
         dir:=dir+sr.Name+'\\';
       FindFirst(dir+'новая*', faDirectory,sr);
       lst2.Items.Add(sr.Name);
     end;
  until (FindNext(Sr) > 0);
end;
но теперь здесь другая проблема он входит в папку и выводит первые 2 наименования папок, а остальное непонятно куда девает. ну и рекурсией здесь и рядом не пахнет. помогите пожалуйста решить проблему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2012, 18:14
Помогаю со студенческими работами здесь

Opendialog и рекурсивный поиск
добрый день! есть процедура рекурсивного поиска по папкам: Procedure TForm1.FindRecursive(Const path: String; Const mask: String); ...

Рекурсивный поиск файлов
Приветствую. Есть вот такая рабочая функция: function Scan($dir) { if (!preg_match(&quot;/\.$/&quot;,$dir)){ if (is_file($dir))...

Рекурсивный поиск файлов
Доброго времени суток. Нужна помощь есть код который вполне подходит мне он ищет диски на компе потом в каждом диске ищет файлы по маске,...

Рекурсивный поиск файлов
Привет всем! Пишу программу, имеющую функционал поиска файлов по ключевым словам. Для начала написал программу, которая перебирала бы...

рекурсивный поиск файлов
Всем привет! Нажно реализовать поиск файлов по маске. Набрасал вот такой код: int search_file(string disk, string mask) { char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru