可否实现循环打开一个目录中的所有文件?(50分)

  • 主题发起人 主题发起人 floatingflavor
  • 开始时间 开始时间
F

floatingflavor

Unregistered / Unconfirmed
GUEST, unregistred user!
用OpenDialog1可不可以实现循环打开一个目录中的所有文件?
如果可以,请附上代码。

分数不够可以再加。
 
SearchFile('c:/*.exe','反回文件列表TStrings');


procedure SearchFile(aPath:String;var Ts :TStrings);
var
aRec: TSearchRec;
FileAttrs: Integer;
begin
try
FileAttrs := faDirectory; {faVolumeID} //目录

if FindFirst(aPath, FileAttrs,aRec) = 0 then
begin
if (aRec.Attr > 0) and (aRec.Name <>'.') and (aRec.Name <>'..') and (aRec.Attr <> FileAttrs) then
begin
Ts.Add(aRec.Name);
end;
end;
while FindNext(aRec) = 0 do
if (aRec.Attr > 0) and (aRec.Name <>'.') and (aRec.Name <>'..') and (aRec.Attr <> FileAttrs)then // and (aRec.Attr = FileAttrs)
begin
Ts.Add(aRec.Name);
// SearchFile(aPath+'/'+aRec.Name); 遍历时用递归
end;
finally
FindClose(aRec);
end;
end;


 
老兄啊,不想用Findfirst之类的东西,用openDialog打开多个文件没问题啊!
if openDialog1.Execute then
ListBox1.Items.Assign(OpenDialog1.Files) 简单的问题多看看属性,帮助!
 
很管用的办法:
把一个目录下的所有文件列到ListBox中
Procedure
TForm1.Button1Click(Sender:
TObject);
var
iFindResult: integer;
SearchRec: TSearchRec;
begin
iFindResult :=
FindFirst('d:/temp/temp6/*.*', faAnyFile, SearchRec);//目录可以更改
while iFindResult = 0 do
begin
ListBox1.Items.Add(SearchRec.Na
me);
iFindResult :=
FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
 
打开和现实文件名字是两码事,一个文件夹下有各种文件,如果是把每个文件都打开,要用API
 
将OpenDialog1的options设置为
[ofHideReadOnly,ofAllowMultiSelect,ofEnableSizing]
就可以多选了
然后OpenDialog1的files返回所选的文件(tstrings)
然后可以得到每个文件名了,接下来知道怎么做了吧???
 
要遍历目录需要 OpenDialog1 吗?用个获得目录名的控件就可以了。

参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1313570

procedure TForm1.Button2Click(Sender: TObject);
var
SR:TSearchRec;
filter:TStrings;
s:string;
begin
filter:=TStringList.create;
filter.add('BMP');
filter.add('SCR');
filter.add('EXE');
if FindFirst('c:/windows/system/*.*', $3f, sr)=0 then
begin
while FindNext(sr)=0 do
begin
s:=trim(UpperCase(extractFileExt(sr.Name)));
if length(s)=0 then continue;
if s[1]='.' then s:=copy(s,2,length(s)-1);
if filter.IndexOf(s)>=0 then showmessage(sr.Name);
end;
FindClose(sr);
end;
filter.free;
end;
 
to resun
<然后OpenDialog1的files返回所选的文件(tstrings)
<然后可以得到每个文件名
如何得到多选的文件中的每个文件名?
我使用如下语句,编译提示说找不到文件路径:
filelist.LoadFromFile(OpenDialog1.files.names);
 
问题解决.
 
后退
顶部