Help~~~!
哪位大哥能帮忙写个boolean型的函数,就是时时检测E:\test\目录下是否有*.dat格式的文件,有的话返回true.
急~!
谢谢~!
问题点数:50、回复次数:7Top
1 楼bestluo(要学)回复于 2003-08-02 09:34:53 得分 5
funcation CheckDat(file:string):boolean
begin
检查文件存在否
IF 有 THEN
RESULT:=TRUE;
END;Top
2 楼jacket008(§优国优民§)回复于 2003-08-02 10:14:52 得分 10
funcation CheckDat(file:string):boolean
var
f: TSearchRec;
begin
result:=false;
if FindFirst('c:\Downloads\*.dat', faDirectory, f) = 0 then
begin
repeat
//if (f.Attr and faDirectory)<>0 then
showmessage('存在'+f.Name+'这个dat文件');
result:=true;
until FindNext(f) <> 0;
FindClose(f);
end;Top
3 楼zxw111(我现在很闲)回复于 2003-08-02 10:17:05 得分 0
upTop
4 楼FrameSniper(http://naoku.net/blogs/framesniper/)回复于 2003-08-02 10:30:09 得分 30
你可以看看相关参考书籍,或者去Google上看看!我这里给你写3个函数(2个辅助函数和一个主函数).......
----------------------------------------------------------------------
辅助函数一:获取目录全称呼----判断目录是否完整,如果目录最后一个字符不是‘\’则补上这个字符后返回;否则直接返回
function GetDirectoryName(Dir:String):String;
begin
if Dir[Length(Dir)]<>'\' then
Result:=Dir+'\'
else
Result:=Dir;
end;
辅助函数二:
function IsDirNotation(ADirName:String):Boolean;
begin
Result:=(ADirName='.') or (ADirName='..');
end;
主函数:在目录APath中搜索名为AFileName的文件,找到返回True,否则返回False。
function FindFile(APath,AFileName:String):Boolean;
var
FSearchRec,DSearchRec:TSearchRec; //TSearchRec是在SysUtils单元定义的一个记录类型,专门用来存放通过FindFirst和FindNext函数搜索到的文件的信息。详细内容可参考Delphi帮助!
FindResult:Integer;
begin
Result:=False;
APath:=GetDirectoryName(APath); //规格化目录参数
//此函数在搜索成功后返回0,否则返回错误码。并将搜索到匹配文件信息存放到第三个TSearchRec类型的参数中
FindResult:=FindFirst (APath+AFileName,faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec);
if FindResult=0 then
begin
Result:=True; //在找到的情况下返回True并退出执行
Exit;
end
else
try
while FindResult<>0 do //此循环在FindFirst失败后搜索其余的同一目录下的其他文件
begin
//FindNext函数无需指定类似FindFirst的前两个参数,且第三个参数必须是FindFirst中提供的参数。因此只有在调用了FindFirst后才可以调用FindNext
FindResult:=FindNext(FSearchRec);
if FindResult=0 then
begin
Result:=True;
Exit;
end;
end;
//在前面没有搜索到的情况下开始对子目录进行查找
FindResult:=FindFirst(APath+'*.*',faDirectory,DSearchRec);
while FindResult=0 do
begin
if ((DSearchRec.Attr and faDirectory)=faDirectory) and not IsDirNotation(DSearchRec.Name) then
FindFiles(APath+DSearchRec.Name,AFileName); //递归调用
FindResult:=FindNext(DSearchRec); //搜索下一个子目录
end;
finally
FindClose(FSearchRec); //释放由FindFirst为TSearchRec结构分配的内存
end;
----------------------------------------------------------------------
Top
5 楼duxin(小伍)回复于 2003-08-02 11:05:09 得分 5
fs 回答的够详细了 还叫我们来干吗
呵呵 申请精华贴?Top
6 楼allanzong(阿狼)回复于 2003-08-02 11:20:01 得分 0
好~谢谢大家~~
尤其感谢FrameSniper~~
谢谢了Top
7 楼FrameSniper(http://naoku.net/blogs/framesniper/)回复于 2003-08-02 12:47:21 得分 0
不好意思,写的仓促,有个错误的地方:需要把FindClose放在每个Exit后....另外对于While循环的条件判断也可以改成等于的形式....Top




