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

Вниз

Аналог функции Add Folder из WinAmp a   Найти похожие ветки 

 
Paladin   (2004-07-09 20:01) [0]

Мне нужно, чтобы следующая процедура добавляла в listview все пути к файлам с расширением mask из startdir и (подкаталогов,но сами подкаталоги не добавляла)
Как в WinAmp - Add Folder, а что изменить я не догадался, подскажите, пожалуйста.
procedure ScanDir(StartDir: string; Mask:string; List:TStrings);
var
 SearchRec : TSearchRec;
begin  
 if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
 begin
   repeat
     Application.ProcessMessages;
     if (SearchRec.Attr and faDirectory) <> faDirectory then
       List.Add(StartDir + SearchRec.Name)
     else if (SearchRec.Name <> "..") and (SearchRec.Name <> ".") then
begin
       List.Add(StartDir + SearchRec.Name + "\");
       ScanDir(StartDir + SearchRec.Name + "\",Mask,List);
     end;
   until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
 end;
end;


 
Mim1 ©   (2004-07-09 20:28) [1]

Вам надо искать по маске *.* и если найденый результат каталог то запускайте эту же функцию (рекурсия) с новыми параметрами, если же это не каталог то проверйте совподает ли имя файла наденому результату при помощи eqalmask ксли да то добавляйте в список.


 
Paladin   (2004-07-09 21:19) [2]

Неее, все должно быть проще... Хотя потом, если ничего не найдется - попробую.


 
Mim1 ©   (2004-07-10 13:32) [3]

Ну ну :)

program test;
{$APPTYPE CONSOLE}
uses sysutils, Masks;

procedure Q(startdir:string; mask:string);
var
SearchRec : TSearchRec;
begin
if FindFirst(StartDir+"\*.*", faAnyFile, SearchRec) = 0 then
begin
  repeat
    if (SearchRec.Attr and faDirectory) = faDirectory then
      begin
        if (SearchRec.Name <> "..") and (SearchRec.Name <> ".") then
          q(startdir+"\"+SearchRec.Name,mask);
      end
    else
      if MatchesMask(SearchRec.Name,mask) then
        writeln(StartDir +"\"+ SearchRec.Name);
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;
end;
begin
 q("d:\mp3","*.mp3");
end.


PS LMD



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1089705911
half_litre
2004-07-13 12:05
2004.07.25
Hint в формах из dll


3-1088500806
Jiny
2004-06-29 13:20
2004.07.25
Как автоматизировать триггер на SELECT из другой таблицы


1-1089062242
Алекс А
2004-07-06 01:17
2004.07.25
Как отследить вставилась ли строка в Memo или нет ?


14-1088723413
Defen
2004-07-02 03:10
2004.07.25
глубиные ошибки


1-1089530999
Islander
2004-07-11 11:29
2004.07.25
Как прописать условия появления PopupMenu?