用findfirst and findnext 做文件搜索的问题(100分)

  • 主题发起人 主题发起人 zzhudy
  • 开始时间 开始时间
Z

zzhudy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过根目录或子目录搜索文件,例如c:/myie/cheng/dd.dat当我给出c:/或c:/myie或别的后
在edit中输入dd.dat,就显示dd.dat是否存在与它的路径。请问怎么做?谢谢!
 
需要递归。给你一段程序
procedure Tform1.FileSearch(PathName:string);
var
F : TSearchRec;
Found : Boolean;
begin
ChDir(PathName);
Found := (FindFirst('*.*', faDirectory, F) = 0);
while Founddo
begin
if (F.Name = '.') or (F.Name = '..') then
begin
Found := (FindNext(F) = 0);
Continue;
end;
if (F.Attr and faDirectory)>0 then
begin
Application.ProcessMessages;
FileSearch(F.Name);
end;
if F.name = 'user.mdb' then
ListBox1.items.Add(GetCurrentDir);
Found := (FindNext(F) = 0);
end;
FindClose(F);
ChDir('../');
end;
 
TO bubble:
我在程序中相应的地方加入如下:
Application.ProcessMessages;
FileSearch(F.Name);
end;
if f.Name =edit1.Text then
//我加的判断f.name是否等于dd.dat
showmessage('name');
//插入你的代码,if F.Name='xxx',GetCurrentDir可以得到当前目录
Found := (FindNext(F) = 0);
end;
在button1.click中加入filesearch('c:/cheng');
可是在listbox中显示的却是当前目录下的所有文件夹路径,为什么?
还有chdir起什么作用呢
 
bubble的方法是可行的,可是我想在查找文件,特别是文本时,查询出文件中包含某个字符串,该怎么写呢?
 
TO 比尔.丐痴:
我也想知道,要是你知道了和我说说吧,谢谢!
 
zzhudy 我已经修改我的程序。
比尔.丐痴 你可以用TStringList.LoadFormFile,比如说
Memo1.Lines.LoadFromFile('c:/1.txt');
然后判断Pos(Substr: string;
Memo1.text)即可,看看帮助。
比较简单。
 
To bubble
使用TMemo可以打开纯文本(TXT)文件,但对WORD和WPS却无能为力。TWebBrowser可打开,而却找不到字符。而使用RichEdit1打开的WORD文档是乱码。
 
TO bubble:
你的程序只能查找当前目录下的文件,而对于当前目录下中下一文件的内容就不行了
例如e:/zhudy/sound/zz ,能在帮帮忙吗谢谢!当当前目录为e:/zhudy/时,想查zz就不行了
 
这个很容易做的吗,
 
TO 张无忌:
怎么,用什么办法这个不能实现呀,想WINDOWS下的一样呀
 
可以,你把文件名都换成大写的,用pos查找,很容易做
 
TO bubble:
kogood@yeah.net
谢谢!
 
TO bubble:
怎么有两个呀
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部