![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Всем доброе время суток! 
		
	
		
		
		
		
		
		
			Задача такая нужно сделать поиск файла во всех вложенных каталогах например с расширением *.txt Вот что я нарыл: Код: 
	//В разделе public пишем строку: 
procedure FindFile(Dir:String); 
//На форму вставляем ListBox1, Button1, Edit1. 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
ListBox1.Clear; // очистка списка файлов 
FindFile(Edit1.Text); // поиск файлов с начальными условиями, заданных в Edit1 
end; 
//Созданная нами вручную процедура поиска:
procedure TForm1.FindFile(Dir:String); 
Var SR:TSearchRec; 
    FindRes:Integer; 
begin 
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 
            FindFile(Dir+SR.Name+''); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли 
            FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге 
            Continue; // продолжить цикл 
         end; 
      ListBox1.Items.Add(SR.Name); 
      FindRes:=FindNext(SR); 
   end; 
FindClose(SR); 
end; Поиск работает НО при условии исли буду искать любые файлы с любым расширением(*.*). Стоит только поставить *.txt или что то другое поиск производится только в том каталоге который указан(Если указан с:\ то ищет только в корне диска а вложенные папки не шарит ). Помогите Please! Заранее благодарен! Последний раз редактировалось Admin, 01.03.2010 в 10:43.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Делай в процедуре 2 цикла 
		
	
		
		
		
		
		
	
		
		
	
	
	в первом поиск файлов по маске во втором поиск и рекурсия по всем подкаталогам с общей маской. Кстати у тебя неправильный вход в рекурсию - где "\" ? В самом начале процедуры добавь Код: 
	Dir := IncludeTrailingPathDelimiter(Dir);  |