Показать сообщение отдельно
  #1  
Старый 20.03.2011, 15:41
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию Find всех коталогов в разделе HD

нужно осуществить поиск всех коталогов в расделе жесткого диска: например 'c:\'...
незнаю по этому поводу никаких алгоритмов попробовал написать сам с использованием двух массивов... поиск работает... только как то странно
в первых катологах вроде всё идет нормально.. а потом получается что то вроде:
'c:\Фото\..\Фото\..\Фото\..\Видео\'
не пойму что такое
вот код:

Код:
procedure TForm1.find1();
var
FindRes:integer;
s:string;
i:integer;
begin
fillchar(s2,sizeof(s2),0);   //очистка второго массива
for i:=1 to length(s1) do begin
FindRes:=FindFirst(s1[i]+'*.',faDirectory,f);
while FindRes=0 do begin
s2[i]:=s1[i]+f.name+'\';
Form1.ListBox1.Items.Add(s2[i]);
FindRes:=Findnext(f);
Application.ProcessMessages;
end;
FindClose(f);
Form1.Find2();
end;
end;


procedure TForm1.find2();
var
FindRes:integer;
s:string;
i:integer;
begin
fillchar(s1,sizeof(s1),0);   //очистка первого массива
for i:=1 to length(s2) do begin
FindRes:=FindFirst(s2[i]+'*.',faDirectory,f);
while FindRes=0 do begin
s1[i]:=s2[i]+f.name+'\';
ListBox1.Items.Add(s1[i]);
FindRes:=Findnext(f);
Application.ProcessMessages;
end;
FindClose(f);
find1();
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
s1[1]:='d:\';
Find1();
end;

подскажите почему получается так: 'c:\Фото\..\Фото\..\Фото\..\Видео\'

незнал как начать писать этот поиск... придумал только так намудрил мне кажется
__________________
Ответить с цитированием