Другие языки программирования и технологии

как программно указать на поддразделы

пишу прогу которая должна искать файлы с расширением бат ну вот в чем беда она ищет только в главном разделе а в поддразделы даж носу не сует вот код как это исправить FindRes:=FindFirst('D:\*.bat',faAnyFile,SR);
German Vernik
German Vernik
12
{$apptype console}

uses
    SysUtils;

procedure find(path: string);
var
    sr: TSearchRec;
    od: string;
begin
    od := GetCurrentDir;
    SetCurrentDir(path);
    if FindFirst('*.bat', faAnyFile, sr) = 0 then
        repeat
            WriteLn(path + '\' + sr. Name);
        until FindNext(sr) <> 0;
    if FindFirst('*', faAnyFile, sr) = 0 then
        repeat
            if (sr. Attr = faDirectory) and (sr. Name <> '.') and (sr. Name <> '..') then
                find(path + '\' + sr. Name);
        until FindNext(sr) <> 0;
    SetCurrentDir(od);
end;

begin
    find('C:\temp');
    WriteLn('*********************');
    ReadLn;
end.
Анатолий Сергеев
Анатолий Сергеев
74 574
Лучший ответ
Попробуйте рекурсивный метод какой нить, просто берете папку, ищете в ней только папки, если нашли, заходите в нее, далее ищете в ней и т. д Как папки найдены не будут переходите к файлам. Далее поднемаетесь на 1 уровень выше в каталоке, еще еще папки, нашли - заходе и так же ище те, не нашли - ищете папки, после чего снова на уровень выше и т. д и т. д и т. д

PS скорость работы алгоритма будет зависеть от вашей реализации.. .
Dengivsem Dengivsem
Dengivsem Dengivsem
4 674
Тут есть пример (работает на Windows, Linux, MacOS X и AmigaOS). http://purebasic.info/phpBB2/viewtopic.php?p=5112#5112
WD
Wad Dawd
3 703