unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure   search(dir:string);
var   
      targetpath:string;{目标路径名}
      sr:TsearchRec;
begin   
      {第一阶段:找出初始dir目录下的所有文件,
      其中dir变量值由edit1的Text属性确定}      targetpath:=extractfilepath(dir);{分解出目标路径名}
      if   findfirst(dir,faanyfile,sr)=0   then   
      repeat   
        if((sr.name<>'.')and(sr.name<>'..'){排除父目录和本目录两个假文件}   
        and((filegetattr(targetpath+sr.name)and   fadirectory)<>fadirectory)){只取文件}   
        then
            form1.memo1.Lines.Add(targetpath+sr.name);{在memo中添加找到的文件}   
      until   findnext(sr)<>0;   
    
      if   findfirst(dir,faanyfile,sr)=0   then   
      repeat   
        if((sr.name<>'.')and(sr.name<>'..')){排除父目录和本目录两个假文件}
        and((filegetattr(targetpath+sr.name)and   fadirectory)=fadirectory){排除文件}
        then
            search(targetpath+sr.name+'\*.*');{递归调用}
      until   findnext(sr)<>0;
end;
   
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Clear;{清除数据表memo字段内容}
search(Edit1.Text);{调用Search()函数}
MessageDlg('文件搜索完毕!',mtInformation,[mbOk],0);{结束提示}end;end.

解决方案 »

  1.   

    看看能不能弹出abc
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    showmessage('abc');
    memo1.Clear;{清除数据表memo字段内容}
    search(Edit1.Text);{调用Search()函数}
    MessageDlg('文件搜索完毕!',mtInformation,[mbOk],0);{结束提示}end;
      

  2.   

    本帖最后由 bdmh 于 2010-08-13 14:45:53 编辑
      

  3.   

    我改了一下你的 search 过程procedure search(dir:string);
    var
      sr:TSearchRec;
    begin
      { 找出初始dir目录下的文件及文件夹, 其中dir传递的是要查找的路径 }  if dir[length(dir)]<>'\' then dir:=dir+'\';         {路径处理为统一格式}  if findfirst(dir+'*.*',faanyfile,sr)=0 then
      repeat
        if ((sr.Attr and fadirectory)=fadirectory) then
        begin
          { 这里处理目录 }
          if (sr.name<>'.')and(sr.name<>'..') then        {排除父目录和本目录两个假文件}
            search(dir+sr.name);                          {递归调用}
        end
        else begin
          { 这里处理文件 }
          Form1.Memo1.Lines.Add(dir+sr.Name);
        end;
      until findnext(sr)<>0;end;
      

  4.   

    begin
    showmessage('abc');
    memo1.Clear;{清除数据表memo字段内容}
    search(Edit1.Text);{调用Search()函数}
    MessageDlg('文件搜索完毕!',mtInformation,[mbOk],0);{结束提示}这个运行了弹不出abc
      

  5.   

    以上方法都试过了,在Click里设了断点,点击后没有反应,加这条信息showmessage('abc');
    也是什么反应都没有
      

  6.   

    你分解的路径有问题,targetpath:=extractfilepath(dir);请检查一下