-
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]Второй вариант немного причесать и получится то что ты хочешь
-
Есть функция 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 же:
Ты молодец. Системный подход виден.