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