kol9di4
Сообщений: 9
Оценки: 0
Присоединился: 2011-07-17 00:25:00.176666
|
мне надо написать программу на дделфи для поиска txt файлов, впринципе все написано но есть одно но,программа работает исправно но когда задаеш маску поиска, тобиш часть имени для поиска файла, то программа работает некорректно, ищет только в заданной папке, в под папке не ищет.. unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShlObj, FileCtrl, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
ListBox1: TListBox;
Label1: TLabel;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
procedure FindFile(Dir:String);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure CallBack(wnd: hWnd; uMsg: UINT; lParam, lpData: LParam) stdcall;
begin
SendMessage(wnd, BFFM_ENABLEOK, 0, 1);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
chosenDirectory : string; slash:string;
begin
// Просим пользователя выбрать требуемый каталог, стартовый каталог C:
if SelectDirectory('Выберите каталог', '\', chosenDirectory)
then ShowMessage('Выбранный каталог => '+chosenDirectory)
else ShowMessage('Выбор каталога прервался');
slash:='\';
edit1.text:=chosenDirectory+slash;
end;
procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
FindRes,k:Integer; Name,exten:string;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
begin Name:=Dir;
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;
Name:=Name+SR.Name;
k:=length(SR.Name); exten:=copy(SR.Name,k-2,3);
if exten='txt' then ListBox1.Items.Add(Name);
FindRes:=FindNext(SR);
end;
FindClose(SR);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear; // очистка списка файлов
FindFile(Edit1.Text); // поиск файлов с начальными условиями, заданных в Edit1
end;
end. посмотрите и подскажите пожалуйста как исправить
|