Форум: "Основная";
Текущий архив: 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.042 c