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

Вниз

Поиск в подкаталоге   Найти похожие ветки 

 
Phoenix9000 ©   (2005-03-01 17:36) [0]

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

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

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

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


 
Nes ©   (2005-03-01 17:41) [1]

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


 
MBo ©   (2005-03-01 17:45) [2]

FindFirst/FindNext


 
ANB ©   (2005-03-01 17:45) [3]

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 - можешь выбросить, это моя форма лога.


 
Cosinus ©   (2005-03-01 17:46) [4]

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


 
ANB ©   (2005-03-01 17:47) [5]

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


 
Phoenix9000 ©   (2005-03-01 18:04) [6]

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

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


 
Fay ©   (2005-03-01 18:09) [7]

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


 
Phoenix9000 ©   (2005-03-01 18:13) [8]

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


 
Fay ©   (2005-03-01 18:28) [9]

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


 
Phoenix9000 ©   (2005-03-01 18:31) [10]

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


 
Anatoly Podgoretsky ©   (2005-03-01 19:54) [11]

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


 
nes ©   (2005-03-01 21:39) [12]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
3-1108368425
miwa
2005-02-14 11:07
2005.03.13
Как получить общее и среднее время в стат.выборке?


14-1108810929
Ilya___
2005-02-19 14:02
2005.03.13
все надписи на кнопках(кириллицей) становяться такими ????????(то


10-1085988322
Глеб
2004-05-31 11:25
2005.03.13
Экспорт таблицы в Word


14-1109109276
Витос
2005-02-23 00:54
2005.03.13
Dial-Up


14-1109152797
olookin
2005-02-23 12:59
2005.03.13
Динамо - Авангард