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

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

Поиск в подкаталоге [D6, Win2k, WinXP]


Phoenix9000 ©   (2005-03-01 17:36:00) 

Доброго времени суток.

Вопрос : Как осуществить поиск по подкаталогам и файлам, типа того, как делается в Windows?? Каталог стационарный, критерии поиска вводятся в поле edit.

Требуется пример кода.

Заранее спасибо всем кто откликнется.


nes   (2005-03-01 21:39:00) [1]

Грр...если файл найден,то получаешь  dir папки  и задаёшь root в ShellListView


Anatoly Podgoretsky   (2005-03-01 19:54:00) [2]

И что тебе препятсвует?


Phoenix9000   (2005-03-01 18:31:00) [3]

2 Fay
В уточнении знаки вопроса не ставятся. :)


Fay   (2005-03-01 18:28:00) [4]

2 Phoenix9000 ©   (01.03.05 18:13) [8]
А где предполагалось поставить вопросительный знак ?


Phoenix9000   (2005-03-01 18:13:00) [5]

Ну Считай продолжением вопроса. Я посмотрел ответы, ну и уточнил.


Fay   (2005-03-01 18:09:00) [6]

2 Phoenix9000 ©   (01.03.05 18:04) [6]
>> Уточню. ....
Это продолжение вопроса, или крутая реклама?


Phoenix9000   (2005-03-01 18:04:00) [7]

Всем большое спасибо.

Уточню. Пользователь вводит в поле edit текст , например "ива", а программа должна найти и выдать в какой нить компонент (ShellListView) список файлов и подкаталогов в названии которых присутствует "ива" (т.е. как делает Windows). Далее при двойном клике на файле из списка он должен запуститься.


ANB   (2005-03-01 17:47:00) [8]

Для поиска всего остального подкорректируй if (((SearchRec.Attr and faDirectory) <> 0)


Cosinus   (2005-03-01 17:46:00) [9]

http://narod.yandex.ru/cgi-bin/yandmarkup?cluster=14&prog=0x2757571A&HndlQuery=1014696432&PageNum=1&g=12&d=0&q0=1384970640&p=1


MBo   (2005-03-01 17:45:00) [10]

FindFirst/FindNext


ANB   (2005-03-01 17:45:00) [11]

procedure FindRecurseTempFolder(sPath : String;
         var sFolderList : String; var iErr : Integer);
var SearchRec: TSearchRec;
   FileAttrs, rc : Integer;
   sName, sFullName : String;
begin
{Рекурсивный поиск списка папок}
Application.ProcessMessages;
if (fmLog.bStop) then Exit;

FileAttrs := 1 + faDirectory
+faHidden+faArchive+faAnyFile;

rc:= SysUtils.FindFirst(sPath+'*.*', FileAttrs, SearchRec);
if (rc = 0) then begin
 repeat
  Application.ProcessMessages;
  if (fmLog.bStop) then Break;
  sName := SearchRec.Name;
  if (((SearchRec.Attr and faDirectory) <> 0) and (sName <> '.') and (sName <> '..'))
  then begin
   sFullName := sPath + sName + '\';
   fmLog.SetCurrent(sFullName);
   // Проверим, не входит ли данная папка в поисковый список
   if (Pos('|'+UpperCase(Trim(sName))+'|', sFolderList) > 0)
   then begin
    // Если да - ругаемся в лог
    fmLog.AddErr('Временная папка '+sName+' обнаружена на пути '+sPath);
    Inc(iErr);
   end;
   // Вызовем сами себя рекурсивно
   FindRecurseTempFolder(sFullName, sFolderList, iErr);
  end;
  Application.ProcessMessages;
  if (fmLog.bStop) then Break;
 until FindNext(SearchRec) <> 0;
 FindClose(SearchRec);
end;
end;

Лишнее сам выкинешь. Вместо *.* свою маску поставишь.
Этот пример ищет только папки. Все, что с fmLog - можешь выбросить, это моя форма лога.


Nes   (2005-03-01 17:41:00) [12]

Всмысле?Нужно, чтобы в определённом каталоге определённый файл рыскал?


Наверх

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