Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
4-1096510724
The-13th-Angel
2004-09-30 06:18
2004.12.05
Как отследить изменение реестра и копирование файлов


14-1100460788
KOMATO3
2004-11-14 22:33
2004.12.05
Я б в программеры пошел, пусть меня научат!


1-1100772746
CCCP
2004-11-18 13:12
2004.12.05
Эскизы страниц


6-1096453737
Yerick
2004-09-29 14:28
2004.12.05
Всё тот же ЛВС


1-1100855579
xkiller
2004-11-19 12:12
2004.12.05
Я пишу свой компонент, меню.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский