//搜索函数
procedure SearchFile(mainpath: string; ExpList: TStringList; var list:
TStringList; SearchChildDir: Boolean = True);
//ExpList 文件类型
var
SearchRec: TsearchRec;
i: integer;
begin
if FindFirst(mainpath + '*', faAnyFile, SearchRec) = 0 then
begin
repeat
Application.ProcessMessages;
if (SearchRec.Name = '.') or (SearchRec.Name = '..') then
Continue;
if ((SearchRec.attr and fadirectory) <> fadirectory) then //如果是文件
for i := 0 to ExpList.Count - 1 do
begin
if AnsiEndsText(ExpList.Strings[i], SearchRec.Name) then
begin
list.Add(Mainpath + SearchRec.Name);
Break;
end;
end
else
if SearchChildDir then
Searchfile(mainpath + SearchRec.Name + '/', ExpList, list);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end; //SearchFile
//替换文件名中的非法字符
function CHeckFileName(sFileName: string; sReplaceStr: string = ''): string;
var
i: Integer;
sChar: string;
const
LawlessChar = '//:*?"<>|';
begin
for i := 1 to Length(LawlessChar) do
begin
sChar := LawlessChar[i];
StrReplace(sFileName, sChar, sReplaceStr);
end;
Result := sFileName;
end;
//被上上面用到的一个函数
procedure StrReplace(var s:String;substr1:String;substr2:String);
var
i:Integer;
ts:String;
begin
ts:=s;
s:='';
i:=1;
while True do
begin
if Copy(ts,i,length(substr1))=substr1 then
begin
s:=s+substr2;
i:=i+length(substr1)
end
else
begin
s:=s+Copy(ts,i,1);
i:=i+1;
end;
if i>length(ts) then break;
end;
end;