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

Вниз

Поиск по всему диску   Найти похожие ветки 

 
lobach ©   (2006-10-03 18:52) [0]

здравствуйте мастера, подскажите как сделать поиск по всему локальному диску
У меня такая фишка:

var
f: TextFile;
SearchRec: TSearchRec;
begin
AssignFile(f, "c:/123.txt");
ReWrite(f);
if FindFirst("c:\" + "*.exe", faAnyFile, SearchRec) = 0 then begin
if (SearchRec.Name <> ".") or (SearchRec.Name <> "..") then
Writeln(f, SearchRec.Name);
while (FindNext(SearchRec) = 0) do begin
Writeln(f, SearchRec.Name);
end;
Closefile(f);

end;
end;


эта процедурка пишет в файл 123.txt все exe-шники, но мне надо искать по всему диску c:.
Как такое дело организовать???


 
Virgo_Style ©   (2006-10-03 19:00) [1]

Рекурсией.
 if (Attr and faDirectory) = faDirectory then вызов самой себя с параметром "путь к свеженайденному каталогу"


 
lobach ©   (2006-10-03 19:10) [2]

Это после FindFirst???
Что-то я не понял, а можно примерчик(например на основе моего кода)???


 
saxon   (2006-10-03 19:17) [3]

dir - очень хорошо такое делает.


 
lobach ©   (2006-10-03 19:28) [4]


> dir - очень хорошо такое делает.

Что за Dir???


 
saxon   (2006-10-03 19:35) [5]

например такой:
в командной строке - dir *.exe /b /s > 123.txt
ну если так надо на Делфи, то
запускаешь что то из winexec/shellexecute/createprocess с такой вот командой, потом находишь свой созданнй файл и делаешь все что надо.


 
Virgo_Style ©   (2006-10-03 19:35) [6]

lobach ©   (03.10.06 19:10) [2]
а можно примерчик


все уже написано до нас. как про рекурсию, так и готовых процедур в инете (и на этом форуме) пруд пруди


 
Virgo_Style ©   (2006-10-03 19:36) [7]

saxon   (03.10.06 19:35) [5]
я надеюсь, вы шутите


 
saxon   (2006-10-03 19:41) [8]


> Virgo_Style ©   (03.10.06 19:36) [7]

ну почему же, по скорости я думаю - это будет пошустрее.


 
Virgo_Style ©   (2006-10-03 20:16) [9]

saxon   (03.10.06 19:41) [8]
а мне кажется, ряд "лишних" файловых операций только замедлит работу.


 
Palladin ©   (2006-10-03 20:21) [10]

однофигственно


 
lobach ©   (2006-10-04 12:31) [11]

Вопрос по тому-же поиску:
Нашел такую процедурку:

procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
   FindRes:Integer;
begin
FindRes:=FindFirst(Dir+"*.*",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
           // входим в процедуру поиска с параметрами текущего каталога +
           // каталог, что мы нашли
           FindFile(Dir+SR.Name+"\");
           FindRes:=FindNext(SR);
           // после осмотра вложенного каталога мы продолжаем поиск
           // в этом каталоге
           Continue; // продолжить цикл
        end;

     ListBox1.Items.Add(SR.Name);
     FindRes:=FindNext(SR);
  end;
FindClose(SR);
end;


Всё работает, находит все файлы на диске, но когда меняю расширение файла, на exe например, он искать ничего не хочет. Покопался, вроде всё правильно, подскажите в чём ошибка.
FindRes:=FindFirst(Dir+"*.exe",faAnyFile,SR);


 
Dmitrij_K   (2006-10-04 12:34) [12]

Не находит директории удовлетворяющие условию "*.exe"


 
lobach ©   (2006-10-04 12:39) [13]


> Не находит директории удовлетворяющие условию "*.exe"

И соответственно если не находит директорий, то и ненаходит файлов в них?
А как это дело обойти?


 
Dmitrij_K   (2006-10-04 12:41) [14]

Искать *.*
самому проверять файл на *.exe В Masks.pas есть функция


 
lobach ©   (2006-10-04 12:44) [15]


> Dmitrij_K

Типа если файл подходит под *.exe, то записать его и продолжить.
Если нет просто продолжить.
Типа того??


 
lobach ©   (2006-10-05 11:54) [16]


> Masks.pas есть функция

Что за функция??? Помогите с этой темой.


 
lobach ©   (2006-10-05 12:29) [17]

Скажите хоть как из TSearchRec расширение файла извлеч???


 
Ketmar ©   (2006-10-05 16:41) [18]

>[17] lobach(c) 5-Oct-2006, 12:29
>Скажите хоть как из TSearchRec расширение файла
>извлеч???
руччкий учить. а ещё английский. справку читать. например, по ExtractFileExt().



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

Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.04 c
15-1159901386
MaRVeL
2006-10-03 22:49
2006.10.22
Глюки...


15-1159239008
Изучаю...
2006-09-26 06:50
2006.10.22
freebsd


15-1158085400
Дед Маздай
2006-09-12 22:23
2006.10.22
Говорите, что плёночка умерла???


15-1159352528
Delphi basic
2006-09-27 14:22
2006.10.22
Переименование системной папки Windows


15-1159431050
euru
2006-09-28 12:10
2006.10.22
Веб-дизайн





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский