首先声明下,不知到的朋友请不要乱讲,谢谢!
题目是这样的:
大概写下关键的内容组建等就不说了
var
r:TsearchRec;
namelist:Tstringlist;
begin
namelist:=Tstringlist.creat;
if findfirst(edit1.text+'\'+'*.txt',faanyfile,r)=0 then
namelist.add(r.name);
repeat
if findnext(r)=0 then namelist.add(r.name);
until findnext(r)<>0;
findclose;
edit2.text:=inttostr(namelist.count);
namelist.free;
可是为什么只找到了一半的文件名,比如说路径文件夹下有18个,这样做下去count显示的是9个,为什么呢?为什么有一半没有找到,请大侠指教
delphi中关于findfirst问题
答案:3 悬赏:80 手机版
解决时间 2021-03-23 23:38
- 提问者网友:棒棒糖
- 2021-03-23 13:08
最佳答案
- 五星知识达人网友:撞了怀
- 2021-03-23 13:27
var
r:TsearchRec;
namelist:Tstringlist;
ret : Integer;
begin
namelist:=Tstringlist.creat;
ret:=findfirst(edit1.text+'\'+'*.txt',faanyfile,r);
while ret=0 do
begin
namelist.add(r.name);
ret:=findnext(r);
end;
findclose;
edit2.text:=inttostr(namelist.count);
namelist.free;
end;
r:TsearchRec;
namelist:Tstringlist;
ret : Integer;
begin
namelist:=Tstringlist.creat;
ret:=findfirst(edit1.text+'\'+'*.txt',faanyfile,r);
while ret=0 do
begin
namelist.add(r.name);
ret:=findnext(r);
end;
findclose;
edit2.text:=inttostr(namelist.count);
namelist.free;
end;
全部回答
- 1楼网友:雪起风沙痕
- 2021-03-23 14:24
if filesetattr(extractfilepath(paramstr(0))+'\'+sr.name,2)=0
是掉'\'了吧.
修改了下:
if (sr.name<>'.') and (sr.name<>'..') then
begin
attr := sr.attr;
if ((attr and fadirectory) = fadirectory ) then
if (((attr and fahidden) = fahidden ) or ((attr and fasysfile) = fasysfile )) then
if filesetattr('d:\path\'+sr.name,0)=0 then //返回0表示成功
showmessage('设置成功!\n'+extractfilepath(paramstr(0))+sr.name);
end;
found:=findnext(sr);
- 2楼网友:大漠
- 2021-03-23 13:43
这是因为你在repeat里运行了一次findnext,然后在until后面又运行了一次findnext。等于一次循环你找了两个文件。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯