Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Поиск папок   Найти похожие ветки 

 
Knoxville   (2005-06-14 23:23) [0]

Здраствуйте!
Подскажите, как можно найти все папки в определенной папке и отразить их в виде списка.
Спасибо.


 
Eraser ©   (2005-06-14 23:26) [1]

Knoxville   (14.06.05 23:23)

Подскажите, как можно найти все папки в определенной папке


FindFirst/Next + F1

отразить их в виде списка

List.Items.Add(название_папки);


 
Knoxville   (2005-06-14 23:30) [2]

FindFirst/Next ищет файлы, а мне надо папки. В хелпе только про файлы написано.


 
Knoxville   (2005-06-14 23:39) [3]

Извиняюсь, папки находит, но иногда какие-то, которых нет, типа ".".
Тогда вопрос: Я не знаю сколько папок всего - надо цикл запускать. Как узнать количество папок?


 
[lamer]Barmaglot ©   (2005-06-14 23:47) [4]

Исключай папки с названием "." и ".." из списка, это спец папки. первая обозначает папку которая открыта в данный момент, вторая папку которая уровнем выше (для примера открой что нибудь типа нортон коммандора и посмотри, практически в любой директории (кроме корневой) увидишь эти папки...


 
Eraser ©   (2005-06-14 23:47) [5]

Knoxville   (14.06.05 23:39) [3]
Извиняюсь, папки находит, но иногда какие-то, которых нет, типа ".".


Их просто надо игнорировать.

Я не знаю сколько папок всего - надо цикл запускать.

Точно!

Как узнать количество папок?

Считать во время работы цикла.


 
Zeqfreed ©   (2005-06-14 23:47) [6]

Knoxville   (14.06.05 23:39) [3]

> Я не знаю сколько папок всего - надо цикл запускать.
> Как узнать количество папок?

Завести переменную-счетчик

> Извиняюсь, папки находит, но иногда какие-то, которых
> нет, типа ".".

Папки "." и ".." есть в каждом каталоге. "." - текущий каталог, ".." - каталог на один уровень выше, просто по условию не добавдяй их в список.


 
Knoxville   (2005-06-14 23:55) [7]

Так а на сколько счетчик делать?


for i:=0 to ??? do


 
Eraser ©   (2005-06-14 23:57) [8]

Knoxville   (14.06.05 23:55) [7]

Читать книжку по паскалю... конкретно про циклы while..do, repeat..until.


 
Просто Джо ©   (2005-06-15 08:08) [9]

Вот, по доброте душевной пост из закрытой ветки про рекурсивную очистку директорий.


unit ScanUtils;

interface
uses SysUtils, Classes;

procedure PurgeDir (const DirName: TFileName; DeleteRoot: Boolean = True);

implementation

procedure ScanDirectory (const Root: TFileName; const
 FileLst,DirLst: TStrings);
var
 DirInfo: TSearchRec;
 FileAttr: Word;
begin
 FileAttr := faDirectory;
 if FindFirst(Root+"\*.*",FileAttr,DirInfo) = 0 then
 begin
   repeat
     if (DirInfo.Attr and FileAttr) <> 0 then
     begin
       if (DirInfo.Name <> ".") and (DirInfo.Name <> "..") then
       begin
         DirLst.Add(Root+"\"+ DirInfo.Name);
         ScanDirectory(Root+"\"+ DirInfo.Name,FileLst,DirLst);
       end
     end
     else
       FileLst.Add(Root+"\"+DirInfo.Name);
   until FindNext(DirInfo) <> 0;
 end;
 FindClose (DirInfo);
end;

procedure PurgeDir (const DirName: TFileName; DeleteRoot: Boolean = True);
var
 DirList,
 FileList: TStrings;
 I: Integer;
begin
 DirList := TStringList.Create;
 try
   FileList := TStringList.Create;
   try
     ScanDirectory(DirName,FileList,DirList);
     for I := FileList.Count-1 downto 0 do
       DeleteFile(FileList[I]);
     for I := DirList.Count-1 downto 0 do
       RemoveDir(DirList[I]);
     if DeleteRoot then
       RemoveDir(DirName)
   finally
     FileList.Free;
   end;
 finally
   DirList.Free;
 end;
end;
end.

Может чего по-невнимательности упустил, писал "на коленке", но, принцип, я думаю, понятен.
П.С. Смотри - не грохни процедурой PurgeDir чего-нибудь важного :))


 
Begu   (2005-06-15 08:26) [10]

а послать списку сообщение LB_DIR с параметром DDL_DIRECTORY не поможет?



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.075 c
10-1095163115
Sancho
2004-09-14 15:58
2005.07.11
TDataSetProvider сам делает Commit


3-1117607493
r9000
2005-06-01 10:31
2005.07.11
Внесение текстового файла в поле базы MySQL


9-1112055781
Strech
2005-03-29 04:23
2005.07.11
Расчет движения автомобиля


14-1118036827
КаПиБаРа
2005-06-06 09:47
2005.07.11
Уважение к чужому мнению


6-1112613606
BioHaz
2005-04-04 15:20
2005.07.11
Печать из TWebBrowser