nethero,下面是例子
function IsValidDir(SearchRec:TSearchRec):Boolean; //这个函数验证有效的Dir
begin
if (SearchRec.Attr=16) and (SearchRec.Name<>'.') and
(SearchRec.Name<>'..') then Result:=True else
Result:=False;
end;
procedure SearchFilesOfDir(path:string;mask:string;Fsn:string;sub:Boolean);
var Dirs,Fs:TStrings;//这是我自己写的一个搜索过程,参数sub是指是否包含子目录
searchRec,SR:TsearchRec;
i,found:integer;
begin
Dirs:=TStringList.Create;
Fs:=TStringList.Create;
Dirs.Add(path);//先加入当前目录
if sub=true then
begin
if (FindFirst(path+'*.*', faDirectory, SearchRec)=0) then
begin
if IsValidDir(SearchRec) then Dirs.Add(path+SearchRec.Name);
while (FindNext(SearchRec) = 0) do
begin
if IsValidDir(SearchRec) then Dirs.Add(path+SearchRec.Name);
end;
end;
FindClose(SearchRec.FindHandle);
end;
for i:=0 to Dirs.Count - 1 do
begin
if Dirs.Strings[length(Dirs.Strings)]<>'/' then
Dirs.Strings:=Dirs.Strings+'/';
Fs.Add(Dirs.Strings);
found:=FindFirst(Dirs.Strings+'*.*',faAnyFile,SR);
while found=0 do
begin
if (SR.Name<>'.') and (SR.Name<>'..') and
(pos(ExtractFileExt(SR.Name),mask)>0) then
Fs.Add(Dirs.Strings+SR.Name);
found:=FindNext(SR);
end;
FindClose(SR.FindHandle);
end;
if pos(getfolder('Favorites')+'/',Fs.Text)>0 then
for i:=1 to Fs.Count - 1 do
begin
if Fs.Strings[length(Fs.Strings)]='/' then
begin
Fs.Strings:= wreplacing(Fs.Strings,path,'');
Fs.Strings:= wreplacing(Fs.Strings,'/','');
end;
end;
Fs.SaveToFile(Fsn);
Fs.Free;
Dirs.Free;
end;
==============================================================
var Dir:string;
ts, hp: tstrings;
i: integer;
begin
Dir:=BrowseFolder;//这是浏览目录函数
if Dir='' Then exit;
waitTitle;//操作开始时标题栏改变,这个过程是我自己写的,你不用管
if Dir[Length(Dir)]<>'/' then Dir:=Dir+'/';
if sender=txt2htmAll then//txt2htmAll是Button名,包含子目录
SearchFilesOfDir(Dir,'.txt',appPath + 'txt2htm.txt',true) else
if sender=txt2htmAllnoSub then//txt2htmAllnoSub也是Button名,不包含子目录
SearchFilesOfDir(Dir,'.txt',appPath + 'txt2htm.txt',false);//搜索结果保存到txt2htm.txt文件
ts := tstringlist.create;
hp := tstringlist.create;
ts.LoadFromFile(appPath + 'txt2htm.txt');
for i:=0 to ts.Count - 1 do
begin
if FileExists(ts.Strings) then
begin
hp.LoadFromFile(ts.Strings);
hp.Text:=txt2htm(hp.Text);//txt2htm(s:string):string是我自己写的函数,你不用管
hp.SaveToFile(replacing(ts.Strings,extractFileExt(ts.Strings),'.htm'));
hp.Text :='';
end;
end;
ts.Free;
hp.Free;
endWait;//操作结束时标题栏还原
Application.MessageBox('任务完成。 ', '提示信息', MB_OK);
end;
//上面是我自己实现的一个将某个目录(可以包含子目录)下的所有txt文件转换
为htm文件的例程。
希望对你有帮助