Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.02.2009, 17:30   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Сканирование папок. Требуется добавить фильтр!

Использую функцию для сканирования папок
Код:
function GetFiles(Path:String; Full: Boolean = False):TStrings;
   Var
   Rec:TSearchRec;
   TMP:TStrings;
   ls: String;
   i: integer;
begin
  Result:=TStringList.Create;
  if Path[Length(Path)]<>'\' Then Path:=Path+'\';
  //ChDir(Path);
  if FindFirst(Path+'\*.*',faAnyFile,Rec)=0 then
    begin
     if (Rec.Name<>'.')and(Rec.Name<>'..') then
       if (Rec.Attr and faDirectory) <> 0 then begin
       TMP:=GetFiles(Path+Rec.Name,True);
       Result.AddStrings(TMP);
       TMP.Free;
       end else Result.Add(Path+Rec.Name);

     while FindNext(Rec)=0 do
       begin
        if (Rec.Name<>'.')and(Rec.Name<>'..') then
         if (Rec.Attr and faDirectory) <> 0 then begin
         TMP:=GetFiles(Path+Rec.Name,True);
         Result.AddStrings(TMP);
         TMP.Free;
         end else Result.Add(Path+Rec.Name);
       end;
    end;

end;
Помогите разобраться и добавить фильтры. Чтобы находились только '.mp3' файлы. Что - то мне не разобраться(
Anfall вне форума
Старый 28.02.2009, 17:43   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

if FindFirst(Path+'\*.mp3',faAnyFile,R ec)=0 then
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 28.02.2009, 17:49   #3
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Спасибо, но вообще ничего не ищет(
18:06
ТО есть ищет, но в подпапках - нет(

Я понимаю - догадаться о назначении кнопки "Правка" вам некогда.
Объясняю - правила раздела напрямую запрещают плодить посты один за другим и предписывают
для редактирования и дополнения своих же сообщений пользоваться именно кнопкой "Правка".
Кстати, там же указан размер штрафа за невыполнение этого пункта.

Последний раз редактировалось mihali4; 28.02.2009 в 19:48.
Anfall вне форума
Старый 28.02.2009, 18:13   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

Код:
procedure TForm2.FindFile(Dir:String);
Var
  SR:TSearchRec;
  FindRes, FS: integer;
begin
  FindRes:=FindFirst(dir+'*.mp3',faAnyFile,SR);

  While FindRes=0 do
  begin
  application.ProcessMessages;


    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
    FindFile(Dir+SR.Name+'\');
    FindRes:=FindNext(SR);
    Continue;
    end;

   memo1.lines.add(dir+sr.name);
    FindRes:=FindNext(SR);
  end;
  FindClose(SR);
end;
этот ищет везде
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 18.03.2009 в 14:13.
KORN вне форума
Старый 28.02.2009, 18:35   #5
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Спасибо! Но все - таки если есть возможность отредактируйте именно тот код!
Anfall вне форума
Старый 28.02.2009, 19:22   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Редактирую:
Код:
function GetFiles(Path:String; Full: Boolean = False):TStrings;
   Var
   Rec:TSearchRec;
   TMP:TStrings;
   ls,ex: String;
   i: integer;
   ok: integer;
begin
Result:=TStringList.Create;
if Path[Length(Path)]<>'\' Then Path:=Path+'\';
  //ChDir(Path);
ok:=FindFirst(Path+'\*.*',faAnyFile,Rec);
while ok=0 do
begin
if (Rec.Name<>'.')and(Rec.Name<>'..') then
if (Rec.Attr and faDirectory) <> 0 then begin
TMP:=GetFiles(Path+Rec.Name,True);
Result.AddStrings(TMP);
TMP.Free;
end else
begin
ex:=ExtractFileExt(Rec.Name);
if ex='.mp3' then
Result.Add(Path+Rec.Name);
end;
ok:=FindNext(Rec);
end;

end;
З.Ы. На будущее - негоже в одной процедуре (функции) дублировать один и тот же кусок кода:
Код:
       begin
        if (Rec.Name<>'.')and(Rec.Name<>'..') then
         if (Rec.Attr and faDirectory) <> 0 then begin
         TMP:=GetFiles(Path+Rec.Name,True);
         Result.AddStrings(TMP);
         TMP.Free;
         end else Result.Add(Path+Rec.Name);

Последний раз редактировалось mihali4; 28.02.2009 в 19:24.
mihali4 вне форума
Старый 28.02.2009, 20:15   #7
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Спасибки!)))
Anfall вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканирование директории D!zel Общие вопросы Delphi 8 22.12.2009 21:11
Сканирование директорий. Serious Общие вопросы Delphi 2 14.02.2009 15:17
Сканирование компонентов окна Василий Общие вопросы Delphi 1 03.01.2009 17:38
Сканирование экрана pecson Общие вопросы Delphi 5 13.12.2008 07:25
сканирование директорий и помещение их в listview А. Долматов Общие вопросы Delphi 4 27.09.2007 13:04