Главная страница
    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.037 c
9-1137462771
Strech
2006-01-17 04:52
2006.10.22
ошибка в DirectX Release


2-1159905689
Лиля
2006-10-04 00:01
2006.10.22
Как закодировать?


15-1159283412
TStas
2006-09-26 19:10
2006.10.22
неужели на самом деле что-то может быть за зловредные проги?


1-1158038346
serjufa
2006-09-12 09:19
2006.10.22
подпись оси Х на графике Excel


1-1157859656
Avgust
2006-09-10 07:40
2006.10.22
Delphi и word





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