判断一个文件夹下是否存在文件 在线等》》》》》 谢谢(80分)

  • 主题发起人 主题发起人 lovenj2008
  • 开始时间 开始时间
L

lovenj2008

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过此程序实现的功能:
用计时器每秒去判断一个文件夹下是否存在文件,如果存在的话,怎样才能获取该文件名呢?如果存在多个文件的话,则获取第一个文件的文件名,并把获取的文件名传递给一个变量.

我需要的是这样的函数,
function returnfileNum(pathname: string):integer;
它能返回pathname指定的文件夹内的文件数目,或者是
function returnfileExist(pathname: string):boolean;
它能返回pathname指定的文件夹内是否有文件。 pathname 文件的目录
 
samples 下有一个文件变化监视的控件,是封装了API的控件
 
用FindFirst,FindNext,FindClose函数。
 
我有用过,但是不是我要的那种意思
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1748637
 
function FindFile(const filespec: TFileName; attributes: integer): TStringList;
var
spec: string;
list: TStringList;

procedure RFindFile(const folder: TFileName);
var
SearchRec: TSearchRec;
begin
// Locate all matching files in the current
// folder and add their names to the list
if FindFirst(folder + spec, attributes, SearchRec) = 0 then begin
try
repeat
if (SearchRec.Attr and faDirectory = 0) or
(SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
list.Add(folder + SearchRec.Name);
until FindNext(SearchRec) <> 0;
except
FindClose(SearchRec);
raise;
end;
FindClose(SearchRec);
end;
// Now search the subfolders
if FindFirst(folder + '*', attributes
Or faDirectory, SearchRec) = 0 then
begin
try
repeat
if ((SearchRec.Attr and faDirectory) <> 0) and
(SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
RFindFile(folder + SearchRec.Name + '/');
until FindNext(SearchRec) <> 0;
except
FindClose(SearchRec);
raise;
end;
FindClose(SearchRec);
end;
end; // procedure RFindFile inside of FindFile

begin // function FindFile
list := TStringList.Create;
try
spec := ExtractFileName(filespec);
RFindFile(ExtractFilePath(filespec));
Result := list;
except
list.Free;
raise;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
list: TStringList;
begin
List:=FindFile('c:/Windows/*.*',faAnyFile);
Label1.caption:='c:/Windows/目录下文件总数:'+inttostr(List.Count);
end;
 
告诉楼主一个简单的办法
在WIN3.1面版下 有这样一个控件TFileListBox
你把它的Visibble属性设为False 即不可见
你可以利用他的属性 完成你的要求
用来设置检测的路径 FileListBox1.FileName := 'C:/';
利用FileListBox1.Items.Count 返回这个目录下所有文件的数量
利用FileListBox1.Items 的遍历返回每个文件的信息

但有个小问题 他不能检测子文件夹
 
在上面函数基础上再加一个小函数就是你要求的:
function TotalFiles(path:string; attributes: integer): integer;
var
list: TStringList;
begin
List:=FindFile(path+'/*.*',attributes);
result:=List.Count;
List.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.caption:='c:/Windows/目录下文件总数:'+inttostr(TotalFiles('c:/windows',faAnyFile));
end;
 
我要知道文件名,计算他的个数我知道,但是我要知道他的文件名,我实时查找后还要movefile的,谢谢能不能按照我的题目,帮我设计下啊,谢谢各位了
 
to(Avalon):
你的方法是不错,我试下。谢谢各位
 
寒,今天才看到这个问题
第一个我见过是表数据库文件.....
其他的我不认识
 
Avalon,的方法很好,子文件夹也有办法。该控件会列出主主文件夹中所有的文件,可以遍历文件列表,通过判断文件的属性来区别文件夹与文件。
 
等我测试成功我会把源码写上来,给各位大哥加分。以后还要请各位指导。
 
多人接受答案了。
 
后退
顶部