怎么获得指定文件夹下 文件的名称列表(包括文件名及及后缀名)
如何获得指定文件夹下 文件的名称列表(包括文件名及及后缀名)
如何获得指定文件夹下 文件的名称列表(包括文件名及及后缀名)?
将 指定文件夹下的所有 文件名及后缀名 列表显示在 ComboBox1 列表中.
------解决方案--------------------
'\*GHOST*.GHO '替换成 '*.xls '
> > ComboBox1.items.add( str ); 这句好像不应在过程里出现的.
也可以,你可以让你的过程里带一个var strList:TStringList参数,这样就可以返回一个strList
procedure GetFile(PathName: string;var strList:TStringList);
...
self.ComboBox1.Items.Assign( strList );这样就可以了
..
------解决方案--------------------
procedure TForm_Main.FileSearch(PathName,FileName:string);
var
F : TSearchRec;
Found : Boolean;
vPath:String;
begin
ChDir(PathName); //设置当前路径为你指定的路径
vPath:=PathName;
if vPath[Length(vPath)] <> '\ ' then
vPath:=vPath+ '\ '; //保证路径名以 '\ '结尾
Form1:=TForm1.Create(self); //创建显示下拉框的窗口
Found := (FindFirst(FileName,faArchive, F) = 0); //开始找文件
while Found do //循环
begin
Form1.ComboBox1.Add(PathName+F.Name); //找到后就将路径+名称写入ComboBox里
Found := (FindNext(F) = 0); //找下一个
end;
Form1.ComboBox1.ItemIndex:=0; //默认显示第一个
Form1.ShowModal; //显示窗口
FindClose(F); //结束查找(一定要写)
end;
参数FileName是搜索关键字,如果找全部文件就应该是 '*.* ',其它文件就可以写 '*.Rar '之类的
以上程序是在我的程序上修改的,没有经过测试。
------解决方案--------------------
樓上正解,可以改爲:
procedure THReportForm.GetFile(PathName: string; strList:TStringList);
var
FindData: TWin32FindData;
hf:THandle;
b:boolean;
tmpstr:string;
tempFolder:string;
str:string;
begin
self.ComboBox1.Items.Assign( strList );
hf := Windows.FindFirstFile(PChar(PathName + '*.xls '), FindData);
if hf = INVALID_HANDLE_VALUE then exit;
b := true;
while b do
begin
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
str:=string(FindData.cFileName);
//self.ComboBox1.Items.Assign( strList );
strList.add( str );
end
else
begin
tmpstr := FindData.cFileName + ' ';
if (tmpstr <> '. ') and (tmpstr <> '.. ') then
begin
tempFolder:=tempFolder+string(FindData.cFileName)+ '\ ';
GetFile(PathName + '\ ' + FindData.cFileName);
end;
end;
b := windows.FindNextFile(hf,FindData);
end;
end;
在这调用:
procedure THReportForm.FormCreate(Sender: TObject);
begin
GetFile( 'F:\CollectionData\ColleExporttoExcel\ ');
end;
如何获得指定文件夹下 文件的名称列表(包括文件名及及后缀名)?
将 指定文件夹下的所有 文件名及后缀名 列表显示在 ComboBox1 列表中.
------解决方案--------------------
'\*GHOST*.GHO '替换成 '*.xls '
> > ComboBox1.items.add( str ); 这句好像不应在过程里出现的.
也可以,你可以让你的过程里带一个var strList:TStringList参数,这样就可以返回一个strList
procedure GetFile(PathName: string;var strList:TStringList);
...
self.ComboBox1.Items.Assign( strList );这样就可以了
..
------解决方案--------------------
procedure TForm_Main.FileSearch(PathName,FileName:string);
var
F : TSearchRec;
Found : Boolean;
vPath:String;
begin
ChDir(PathName); //设置当前路径为你指定的路径
vPath:=PathName;
if vPath[Length(vPath)] <> '\ ' then
vPath:=vPath+ '\ '; //保证路径名以 '\ '结尾
Form1:=TForm1.Create(self); //创建显示下拉框的窗口
Found := (FindFirst(FileName,faArchive, F) = 0); //开始找文件
while Found do //循环
begin
Form1.ComboBox1.Add(PathName+F.Name); //找到后就将路径+名称写入ComboBox里
Found := (FindNext(F) = 0); //找下一个
end;
Form1.ComboBox1.ItemIndex:=0; //默认显示第一个
Form1.ShowModal; //显示窗口
FindClose(F); //结束查找(一定要写)
end;
参数FileName是搜索关键字,如果找全部文件就应该是 '*.* ',其它文件就可以写 '*.Rar '之类的
以上程序是在我的程序上修改的,没有经过测试。
------解决方案--------------------
樓上正解,可以改爲:
procedure THReportForm.GetFile(PathName: string; strList:TStringList);
var
FindData: TWin32FindData;
hf:THandle;
b:boolean;
tmpstr:string;
tempFolder:string;
str:string;
begin
self.ComboBox1.Items.Assign( strList );
hf := Windows.FindFirstFile(PChar(PathName + '*.xls '), FindData);
if hf = INVALID_HANDLE_VALUE then exit;
b := true;
while b do
begin
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
str:=string(FindData.cFileName);
//self.ComboBox1.Items.Assign( strList );
strList.add( str );
end
else
begin
tmpstr := FindData.cFileName + ' ';
if (tmpstr <> '. ') and (tmpstr <> '.. ') then
begin
tempFolder:=tempFolder+string(FindData.cFileName)+ '\ ';
GetFile(PathName + '\ ' + FindData.cFileName);
end;
end;
b := windows.FindNextFile(hf,FindData);
end;
end;
在这调用:
procedure THReportForm.FormCreate(Sender: TObject);
begin
GetFile( 'F:\CollectionData\ColleExporttoExcel\ ');
end;