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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2008, 12:53   #1
D!zel
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 74
По умолчанию Сканирование директории

может кто знает как можно сканировать нужную папку на все находящиеся в ней файлы и подпапки?
D!zel вне форума Ответить с цитированием
Старый 23.12.2008, 13:39   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

findfirst +f1
findnext + f1
tsearchrec +f1
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.12.2008, 13:46   #3
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Доброе время суток!!!
Попробуй так ;



Код:

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;

if not Full then
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;
  FindClose(Rec);
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Assign(GetFiles('C:\Windows\System32'));
end;

end.
Взял от сюда
Там куча примеров по этой теме!!!
Разберётесь!!!
С уважением,
Volkogriz!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 23.12.2008 в 13:50.
Volkogriz вне форума Ответить с цитированием
Старый 23.12.2008, 13:47   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Плюс если не полениться воспользоваться поиском по форуму или хотя бы посмотреть в самый низ этой страницы... Ответы даны.
mihali4 вне форума Ответить с цитированием
Старый 23.12.2008, 14:49   #5
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Вот так совпадение...
Как раз пишу прогу где затрагивается сканирование папки\папок!

Нашел в DelphiWorld следующее:
Кинул на форму кнопку, едит и ListBox.
реакция на OnClick по кнопке:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  FindRes: Integer; 
  Poisk:String;
begin
  Poisk:= Edit1.Text; // Присваиваем путь к апке/каталогу    
                            // где следуеп провести поиск
  ListBox1.Clear;      // Очистка ЛистБокса (При повторном сканировании
                            // или после смены места поиска)            

  FindRes := FindFirst(Poisk+'*.*', 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;
    ListBox1.Items.Add(SR.Name);
    FindRes := FindNext(SR);
  end;
  FindClose(SR);
end;
У меня работает без проблемм!
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 23.12.2008, 16:07   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Нашел в DelphiWorld
Там все почему-то ищут. А у нас на форуме что - такая сложная система поиска? Или "в чужих руках всегда толще кажется"?
mihali4 вне форума Ответить с цитированием
Старый 23.12.2008, 16:14   #7
D!zel
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 74
По умолчанию

Volkogriz, спасибо большое! эта функция мне больше понравилась...
______________
Demien, не знаю как она работает, потому что лично у меня она показывает папку которая была открыта, например если я укажу C:\WINDOWS, то она мне выдаст одну строку с названием WINDOWS, но не сканирует ее
D!zel вне форума Ответить с цитированием
Старый 23.12.2008, 16:16   #8
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

mihali4, чужое милее! .
Сорри за флуд.
Altera вне форума Ответить с цитированием
Старый 22.12.2009, 21:11   #9
Ferz-2009
Пользователь
 
Аватар для Ferz-2009
 
Регистрация: 10.12.2009
Сообщений: 30
По умолчанию

Код:
public
    { Public declarations }

       procedure FindFiles(Dir: string);
___________________________________ _______

Код:
procedure TForm1.FindFiles(Dir: string);
const
  EXT = '.mp3';
var
  SearchRec: TSearchRec;
begin
  Dir := IncludeTrailingBackslash(Dir);
  if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
      if (SearchRec.Name = '.') or (SearchRec.Name = '..') then
        Continue;
      if (SearchRec.Attr and faDirectory) <> 0 then
        FindFiles(Dir + SearchRec.Name)
      else
    if ExtractFileExt(Dir + SearchRec.Name) = EXT then
          mainlist.Items.Add(Dir + SearchRec.Name);
    until
      FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;
___________________________________ ___________


Код:
procedure TForm1.Button1Click(Sender: TObject);
var path:string;
begin
path:='C:\' ;
FindFiles(PATH);
У нас принято оформлять код специальным тэгом - кнопочка "#".
Модератор

Последний раз редактировалось mihali4; 22.12.2009 в 21:20.
Ferz-2009 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор директории Kashp Общие вопросы Delphi 6 06.05.2009 06:29
Сканирование экрана pecson Общие вопросы Delphi 5 13.12.2008 07:25
Сканирование программой папки. Delphi DerSky Помощь студентам 2 21.05.2008 10:52
выбор директории Var17 Win Api 5 13.05.2008 13:50
сканирование директорий и помещение их в listview А. Долматов Общие вопросы Delphi 4 27.09.2007 13:04