Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
14-1109053712
Holy
2005-02-22 09:28
2005.03.13
Антивирус


3-1108102236
O.O
2005-02-11 09:10
2005.03.13
Принудительная запись кэш BDE на диск


4-1107077574
Максим
2005-01-30 12:32
2005.03.13
Выключение компьютера


3-1108198090
Troiki
2005-02-12 11:48
2005.03.13
Ошибка ADOQuery


3-1108204757
UVV
2005-02-12 13:39
2005.03.13
Запрос по дате в Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский