Главная страница
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.042 c
3-1099909336
Геннадий
2004-11-08 13:22
2004.12.05
ORACLE: можно ли добавить (insert) сразу несколько строк?


1-1100860387
TankMan
2004-11-19 13:33
2004.12.05
Как запускать с параметрами так это легко, а как возвращать...


4-1098366299
Serega41
2004-10-21 17:44
2004.12.05
Как перехватить сообщения от OutputDebugString, DbgPrint?


1-1100682836
wzCOM
2004-11-17 12:13
2004.12.05
Работа с IrDa


3-1099734467
гость
2004-11-06 12:47
2004.12.05
interbase