![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись путей ко всем каталогам диска в текстовый файл... [D7, WinXP]
Max.66RUS © (2006-10-24 20:12:00)Подскажите пожалуйста, как реализовать следующую процедуру: нужно, чтобы пути ко всем каталогам, в т.ч. и вложенным, которые существуют на диске, записались в текстовый файл. Т.е. к примеру, если на диске С существует три папки: "1", "2" и "3". То нужно, чтобы в текстовый файл записалась следующая информация:
-
C:/1/
C:/2/
C:/3/
-
Заранее спасибо.
Джо (2006-10-24 20:33:00) [1]Пардон, перед FindDirsRecursively(FullName,OnFileFoundProc); вставить:
OnFileFoundProc (FullName);
Джо (2006-10-24 20:31:00) [2]
// Параметр коммандной строки — путь к папке
//
// Выводит список папок в стандартный вывод (можно перенаправить в файл)
program ListFiles;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
type
// Прототип процедуры обратного вызова
TOnNextFileProc = procedure (const AFileName: string);
procedure FindDirsRecursively(StartDir: string; OnFileFoundProc: TOnNextFileProc);
Var
Sr: TSearchRec;
FullName: string;
begin
if FindFirst(StartDir+'*.*', faAnyFile, Sr) = 0 then
begin
repeat
if (Sr.Attr and faDirectory)>0 then
begin
if (Sr.Name <> '.') and (Sr.Name <> '..') then
begin
FullName := StartDir + Sr.Name + '\';
// рекурсивный вызов
FindDirsRecursively(FullName,OnFileFoundProc);
end;
end;
until FindNext(Sr) <> 0;
FindClose(Sr);
end;
end;
procedure OnNewFile (const AFileName: string);
begin
WriteLn (AFileName)
end;
var
Dir: string;
begin
Dir := ParamStr(1);
Dir := IncludeTrailingPathDelimiter(Dir);
FindDirsRecursively(Dir,OnNewFile);
end.
Переделывай, как считаешь нужным. И не забудь, что тут с длинными (длиннее MAX_PATH) именами путей будет беда.
Наиль (2006-10-24 20:25:00) [3]Ответ не серьёный, но работает
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec('Cmd /c dir /s/b c:\ >c:\files.txt',SW_HIDE);
Hide;
sleep(15000);
Show;
Memo1.Lines.LoadFromFile('c:\files.txt');
end;