Конференция "FreePascal" » получения списка файлов в каталоге и подкаталогах [linux]
 
  • Zhbr (31.01.14 02:31) [0]
    Как получить список файлов в папке и всех ее подпапок
    Через TSearchRec пробовал но там соответственно получается две процедуры делать, получения списка каталогов а потом файлов, причем всем этим управлять нужно + ошибочные записи)) может кто знает как проще))?
  • Rouse_ © (31.01.14 13:38) [1]

    > Через TSearchRec пробовал но там соответственно получается
    > две процедуры делать, получения списка каталогов а потом
    > файлов

    Зачем две? Почему одной не получается?
  • Zhbr (31.01.14 19:09) [2]
    получается одной процедурой получаю список каталогов для указанного пути, другой список файлов для указанного пути.
    может подскажете как одной, у меня идей как это сделать нет
  • Rouse_ © (31.01.14 19:46) [3]
    Показывай свой код.
  • Zhbr (01.02.14 13:26) [4]
    Процедура получения списка папок:
    procedure GetDirList (path:string);
     var SearchDir:TsearchRec;
     begin
       SetCurrentDir(path);
       If FindFirst ('*',faDirectory,SearchDir)=0 then
       begin
            repeat
            begin
                 If (SearchDir.Attr and faDirectory) = faDirectory then
                 begin
                 if (SearchDir.Name <> '..') and (SearchDir.Name <> '.') then
                    begin
                         writeln(Path + SearchDir.Name + '/');
                         dir[countD]:=Path + SearchDir.Name + '/';
                         Inc(countD);
                    end;
                 end;
            end;

            until FindNext(SearchDir)<>0;
       end;
       FindClose(SearchDir);
     end;  



    Получение списка файлов:
    procedure GetFileList (path:string);
     var SearchFiles:TsearchRec;
     begin
          SetCurrentDir(path);
          If FindFirst ('*',faAnyFile,SearchFiles) = 0 then
             begin
             repeat
             
             
                    if (SearchFiles.Attr and faDirectory) <> faDirectory then
                       begin
                       
                            files[countF]:=Path + SearchFiles.Name;
                            inc(countF);
                   
                          end;
             until FindNext(SearchFiles) <> 0;
             FindClose(SearchFiles);
             end;
     end;    



    Этот кусок управляет ими:
    var searching:boolean;
       countT:integer;
       i : integer;
    begin
    countF:=0;
    countD:=1;
    countT:=1;
    searching:=true;
    Write('Введите путь проверки ');
    Readln (dir[0]);
    GetDirList(dir[0]);
    while searching=true do
    begin
     GetDirList(dir[countT]);
     inc(countT);
     if countT = countD then searching:=false;
    end;
    Writeln ('Кол-во папок = ',countT);
    for i:= 0 to countT-1 do GetFileList(dir[i]);
    readln;
    end.    

  • Rouse__ (01.02.14 23:00) [5]
    Второй вариант немного причесать и получится то что ты хочешь
  • java73 © (24.06.15 12:51) [6]
    Есть функция FindAllFiles же:

     
    DumpDir:=AppendPathDelim(ExtractFileDir(ParamStrUTF8(0)))+'Dump';
     DumpDir:=AppendPathDelim(DumpDir);
     if DirPathExists(DumpDir) then begin
       SQLFiles:=TStrings.Create;
       SQLFiles:=FindAllFiles(DumpDir,'*.sql',FALSE);
       for I:=0 to SQLFiles.Count do begin
         DBLabel.Caption:='Выполняется импорт из файла '+SQLFiles.Strings[I];
         DM1.SQLproc.Clear;
         DM1.SQLproc.LoadFromFile(UTF8ToSys(SQLFiles.Strings[I]));
         DM1.SQLproc.Execute;
       end;
       DBLabel.Caption:='Импорт успешно завершён';
       SQLFiles.Free;
     end else ShowMessage('Каталог с дампом не найден');      

  • Rouse_ © (24.06.15 18:23) [7]

    > java73 ©   (24.06.15 12:51) [6]
    > Есть функция FindAllFiles же:

    Ты молодец. Системный подход виден.
 
Конференция "FreePascal" » получения списка файлов в каталоге и подкаталогах [linux]
Есть новые Нет новых   [134427   +37][b:0][p:0.002]