求救!如何取得一个目录下的所有文件的文件名?(100分)

  • 主题发起人 主题发起人 GBlueMan
  • 开始时间 开始时间
G

GBlueMan

Unregistered / Unconfirmed
GUEST, unregistred user!
做一数据库报表程序遇到如下问题:
在一个目录下有多个具有年月信息的*.DBF文件--〉
A01-0597.dbf -->1997年5月A方面的数据
A02-0597.dbf -->1997年5月B方面的数据
……
A01-0697.dbf -->1997年6月A方面的数据
A02-0697.dbf -->1997年6月B方面的数据
……
现用户要求能在指定数据的目录后能自动认出是那一年那个月份的数据,而不用手动
输入0597之类的东西,现想通过取得文件名然后将0597等字符串取出,然后加入到
ComboBox里让使用者选,但又不知如何取文件名。如果不取文件名是否有其他方法?

请各位大虾救救小弟,别人急着要呢!
 
请参阅FindFirst, FindNext的帮助信息(有例程的),照着做很快就出来了。
 
就是,我回答过类似的问题,你查查,返回是文件名列表,怎么做都可以。
 
给你例子吧!
--------------------------------------------------------------
procedure FindAllFiles(var Dir,Mask:string);
var
SRec: TSearchRec;
retval: Integer;
oldlen: Integer;
path:string;
begin
Path:=Dir;
oldlen := Length(Dir);
retval := FindFirst( Dir+Mask,faAnyFile,SRec);
While retval=0 Do
Begin
If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then //是文件
begin
//相应的处理,用户自己添加
end;
retval := FindNext(SRec);
End;
FindClose(SRec);

retval:=FindFirst(path+'*.*',faDirectory,SRec);
While retval=0 Do
Begin
If (SRec.Attr and faDirectory)<>0 Then //是目录
If (SRec.Name <> '.') and (SRec.Name <> '..') Then
Begin
path := path + SRec.Name + '/';
Recurse(path, mask);
Delete(path,oldlen+1,260);
End;
retval := FindNext( SRec );
End;
FindClose( SRec );
end;
 
//取指定目录文件名列表。
procedure TForm1.FindAll(const Path: String);
var
sr:TSearchRec;
fr:Integer;
begin
if length(path) <> 3 then
Path := path+'/*.*'
else
Path := path+'*.*';

fr:=FindFirst(Path,faAnyFile,sr);
while fr=0 do
begin
if (sr.Attr=faDirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
FindAll(sr.name+'/*.*') //递归查找下一个目录
else
begin
//处理文件
showmessage(sr.name);
end;
fr:=FindNext(sr);
end;
FindClose(sr);
end;
 
var
flb:tfilelistbox;
i:integer;
begin
flb:=tfilelistbox.creat(self);
flb.directory:=s_syspath;
flb.mask:='*.dbf';
flb.parent:=self;
for i:=0 to flb.items.count-1 do
begin
//处理文件 flb.items
end;
flb.free;
end;
 
接受答案了,其中南宫兄的代码最简短,我就用他的了!
kingdeezj,maming也不错,总之感谢大家的帮忙,谢谢!
 
后退
顶部