delphi中 如何统计有多少文件名是相同的,然后输出文件的数量(有几份是相同的)
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
2015-01-14
展开全部
是统计整个计算机?还是统计某个磁盘的某个目录?
网上有一个工具everythind可以列表整个计算机的文件和目录,并自动排序。可以输出为文本文件再用你编制的程序进行后处理。(要自己编写前者有难度,效率也是问题)
若是统计某个目录(含子目录),可以用pascal的findfirst、findnext函数编写递归程序遍历这个目录......
这是我若干年前编的目录列表程序,供参考:
{$m 16000,0,0}
program dl;
uses dos;
var
s:string;
procedure search;
var
ps:string[89];
aaa:string[12];
flag:byte;
dirinfo:searchrec;
l:byte;
begin
findfirst('*.*',$17,dirinfo);
while doserror=0 do begin
aaa:=dirinfo.name;
flag:=dirinfo.attr;
if (aaa<>'.')and(aaa<>'..')and($10=(flag and $10)) then begin
chdir(aaa);
ps:=fexpand(aaa);
l:=length(ps);
while ps[l]<>'\' do begin
delete(ps,l,1);
l:=l-1;
end;
delete(ps,l,1);
writeln(ps);
search;
chdir('..');
end;
findnext(dirinfo);
end;
end;
begin
getdir(0,s);
writeln(s);
search;
readln;
end.
网上有一个工具everythind可以列表整个计算机的文件和目录,并自动排序。可以输出为文本文件再用你编制的程序进行后处理。(要自己编写前者有难度,效率也是问题)
若是统计某个目录(含子目录),可以用pascal的findfirst、findnext函数编写递归程序遍历这个目录......
这是我若干年前编的目录列表程序,供参考:
{$m 16000,0,0}
program dl;
uses dos;
var
s:string;
procedure search;
var
ps:string[89];
aaa:string[12];
flag:byte;
dirinfo:searchrec;
l:byte;
begin
findfirst('*.*',$17,dirinfo);
while doserror=0 do begin
aaa:=dirinfo.name;
flag:=dirinfo.attr;
if (aaa<>'.')and(aaa<>'..')and($10=(flag and $10)) then begin
chdir(aaa);
ps:=fexpand(aaa);
l:=length(ps);
while ps[l]<>'\' do begin
delete(ps,l,1);
l:=l-1;
end;
delete(ps,l,1);
writeln(ps);
search;
chdir('..');
end;
findnext(dirinfo);
end;
end;
begin
getdir(0,s);
writeln(s);
search;
readln;
end.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询