Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск [D7, XP]


lobach ©   (2006-10-08 13:18:00) 

Данная процедура должна искать все exe файлы в каталоге, указанном в Edit1. В большинстве ищет exe, но попадаются и другие, в чем ошибка?

procedure TForm1.FindFile(Dir: string);
var
ext:String;
SR: TSearchRec;
FindRes: Integer;
begin
FindRes := FindFirst(Dir + '*.*', faAnyFile, SR);
if Length(SR.Name) > 3 then begin
ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];
end;
while FindRes = 0 do
begin
if ((SR.Attr and faDirectory) = faDirectory) and
((SR.Name = '.') or (SR.Name = '..')) then
begin
FindRes := FindNext(SR);
if Length(SR.Name) > 3 then begin
ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];
end;
Continue;
end;
if ((SR.Attr and faDirectory) = faDirectory) then
begin
FindFile(Dir + SR.Name + '\');
FindRes := FindNext(SR);
if Length(SR.Name) > 3 then begin
ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];
end;
Continue;
end;
if ext='exe' then begin
ListBox1.Items.Add(Dir+SR.Name);
end;
FindRes := FindNext(SR);
end;
FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear;
FindFile(Edit1.Text);
end;


Percent   (2006-10-08 23:56:00) [1]

оно читать не умеет -- проверено.

Осел останется ослом,
Хотя осыпь его звезд ами;
Где должно действовать умом,
Он только хлопает ушами...

(С) Державин


Ketmar   (2006-10-08 23:49:00) [2]

когда это неко умрёт?

зыж не стоит отвечать. оно читать не умеет -- проверено.


Anatoly Podgoretsky   (2006-10-08 14:06:00) [3]

Откуда взял такой дикий код?
Ко мне на сайт за FAQ, обратить особое внимание на ответ от Юрия Зотова, в нем учтены обычные логические ошибки при поиске по расширению.


Percent   (2006-10-08 13:20:00) [4]

if Length(SR.Name) > 3 then begin
ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];


Опять эти художества?
Ну почитал бы справку об ExtractFileExt, что ли?


Percent   (2006-10-08 13:19:00) [5]

*.*


Наверх

Титульная страница Поиск, карта сайта Написать письмо