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

Вниз

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

 
PC ©   (2004-11-19 02:09) [0]

Вот мне надо найти все папки по указанному адресу (типа там C:\temp\Some_Thing). Как? Заранее спасибо.


 
Devel ©   (2004-11-19 02:14) [1]

FindFirst,FindNext


 
PC ©   (2004-11-19 02:16) [2]

А разве так можно для папок? Я так ищю файлы. А как тогда задавать маску?


 
Тестировщица ©   (2004-11-19 04:41) [3]

Маску - так же, как и для файлов.(C:\temp\Some_Thing\*.*)
F1 FindFirst, посмотри пример и обрати внимание на faDirectory


 
***SPIDER***   (2004-11-19 07:00) [4]

Попробуй так:

procedure TForm1.FindAllDir(Dir:String);
Var SR:TSearchRec;
   FindRes:Integer;
begin
Dir:=IncludeTrailingBackSlash(Dir);
FindRes:=FindFirst(Dir+"*.*",faAnyFile,SR);
While FindRes=0 do
  begin
     if ((SR.Attr and faDirectory)=faDirectory) and
     ((SR.Name=".")or(SR.Name="..")) then
     begin
       FindRes:=FindNext(SR);
       Continue;
     end;

     if ((SR.Attr and faDirectory)=faDirectory) then  
     begin
        ...
        {здесь запоминаем Dir в какой-то список (глобальный)}
        ...
        FindAllDir(Dir+SR.Name);
        FindRes:=FindNext(SR);
        Continue;
     end;
     FindRes:=FindNext(SR);
  end;
FindClose(SR);
end;


 
Fay ©   (2004-11-19 08:33) [5]

2 ***SPIDER***   (19.11.04 07:00) [4]
Попробуй так:
procedure TForm1.FindAllDir(List : TStrings; Dir : string);
var
 fd : WIN32_FIND_DATAA;
 fh : DWORD;
begin
 Dir := IncludeTrailingBackSlash(Dir);
 fh := FindFirstFile(PChar(Dir + "*.*"), fd);
 if fh <> INVALID_HANDLE_VALUE then
   try
     repeat
       if (fd.cFileName[0] <> ".") and ((fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then
         begin
           List.Add(Dir + fd.cFileName);
           FindAllDir(List, Dir + fd.cFileName)
         end;
     until not FindNextFile(fh, fd);
   finally
     Windows.FindClose(fh);
   end;
end;


8)


 
PC ©   (2004-11-19 18:28) [6]

Всем спасибо, заработало. Я вчера после прочтения поста № 2 попробовал сделать сам, тока у меня были какие-то левые имена папок - ".". Что это? Да, и еще: есть-ли какая-нить функция для изменения расширения файла? Типа-там str := "bla.bmp"; Превратить str в "bla.jpg"? Я сделал через "найти точку и отрезать, а потом прибавить".


 
begin...end ©   (2004-11-19 18:34) [7]


> [6] PC ©   (19.11.04 18:28)


> тока у меня были какие-то левые имена папок - ".". Что это?

"." - текущий каталог;
".." - родительский каталог.



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
3-1099493944
denis24
2004-11-03 17:59
2004.12.05
динамический report


3-1099803279
SergP
2004-11-07 07:54
2004.12.05
Как получить коментарий к полю?


3-1100000551
Rule
2004-11-09 14:42
2004.12.05
Вопрос по хранимым процедурам в Фаерберде


14-1100171946
Sash
2004-11-11 14:19
2004.12.05
IE(cgi-bin)


14-1100658752
uses-mind.dll
2004-11-17 05:32
2004.12.05
нужен русский хелп для дэльфи 6, встраиваемый в среду .