procedure TForm1.Button1Click(Sender: TObject);
下面我该怎么调用上面的函数呢

解决方案 »

  1.   

    getfilecount函数应该放到Tform1的定义了,你放到formcreate事件相应函数里成了一个函数内嵌的函数,当然外面别的函数访问不到了。
      

  2.   

    function GetFileCount(srcPath, srcFileName: string): Integer;
     定义在FormCreat事件 中,
    Button事件是不能调用的,你应该将它拉出来,放在
    private

    public
        { Public declarati
    均可:
    单元代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        function GetFileCount(srcPath, srcFileName: string): Integer;
      end;var
      Form1: TForm1;implementation{$R *.dfm}function TForm1.GetFileCount(srcPath, srcFileName: string): Integer;
    var FileRec: TSearchrec;
        currPath: string;
    begin
      if srcPath[Length(srcPath)] <> '\' then srcPath := srcPath + '\';
      currPath := srcPath + '*.*';
      Result := 0;
      if FindFirst(currPath, faAnyFile, FileRec) = 0 then
      repeat
        if ((FileRec.Attr and faDirectory) <> 0) and
          (FileRec.Name <> '.') and
          (FileRec.Name <> '..') then
        begin
          Result := Result + GetFileCount(srcPath + FileRec.Name, srcFileName);
        end
        else
          if AnsiCompareText(srcFileName, FileRec.Name) = 0 then
            Result := Result + 1;
      until FindNext(FileRec) <> 0;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var n:integer;
    begin
      n:=GetFileCount('I:\', '1.txt');
      showmessage('有'+inttostr(n)+'个同名文件');
    end;end.
      

  3.   

    编译,验证时,使用一个U盘。在C:\盘目录文件太多,会执行很长时间。
    U盘的不同的目录,拷贝若干个1.txt文件。  就可以验证了。比如U盘是I:
    procedure TForm1.Button1Click(Sender: TObject);
    var n:integer;
    begin
      n:=GetFileCount('I:\', '1.txt');
      showmessage('有'+inttostr(n)+'个同名文件');
    end;