我在数据库里存了一些文件的文件名,要系统能自动去搜索这些文件在计算机里的路径!搜索到以后自动写到数据库里和该文件对应的路径里,请问有没有什么方法!对单个文件的搜索我看了不少贴子,自己这边功能也实现了,但要搜索多个文件不知道该如何进行!还有像字符串c:\123\456\aa.exe 有没有函数能把aa.exe这段取出来的,ExtractFilePath只能取前面的路径,不知道取后面的文件名要用什么?
如:
文件名 路径
aa.exe c:\...\aa.exe
如:
文件名 路径
aa.exe c:\...\aa.exe
var
searchrec:TSearchRec;
ext,FFileName:string; //后缀
begin
Application.ProcessMessages;
//在路径后面加上'\'
if path[length(path)]<>'\' then
path := path + '\'; if FindFirst(path+'*.*', faAnyFile, SearchRec)<>0 then
begin
//如果没有找到任何文件和文件夹,退出并且提示
exit;
end;
//判断是否为目录,是目录则循环
if (searchrec.Attr and faDirectory) <> 0 then
begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then
searchpath(path+searchrec.name,FileName);
end
else begin
FFileName :=AnsiUpperCase(Searchrec.Name);
if Pos(FileName,FFileName)>0 then
begin
if IsInBound(ExtractFileExt(FFileName)) then //是否在扩展名的范围内。
begin
AddFileInfo(Searchrec,path);
end;
end;
end;
while findnext(searchrec)=0 do
begin
if (searchrec.Attr and faDirectory) <> 0 then
begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then
searchpath(path+searchrec.name,FileName);
end
else begin
FFileName :=AnsiUpperCase(Searchrec.Name);
if Pos(AnsiUpperCase(FileName),FFileName)>0 then
begin
if IsInBound(ExtractFileExt(FFileName)) then //扩展名是否有效。自己定义的函数
begin
AddFileInfo(Searchrec,path);//添加进数据库的过程,自己定义的。
end;
end;
end;
end;
findclose(searchrec);
end;