熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

如何用Delphi實現子目錄級的文件查詢

2013-11-11 21:04:25  來源: Delphi編程 
在應用實踐中我們經常會用到文件查詢功能通過Win中提供的查找功能我們可以方便的找出磁盤上任何子目錄下的文件其原因是該查找功能可以遍歷指定目錄下的所有子目錄中的文件從編程角度講它實現了子目錄級的文件查詢其實這項功能並不難實現關鍵是能理解並掌握懙莨閽這種程序設計思路本人用Delphi實現了該項功能(任意子目錄級)由於使用了懙莨閽程序思路清晰代碼量小

  實現方法

  . 獲取當前目錄下的所有下一級子目錄

  . 存入字符串列表中(Tstrings)

  其中用到了幾個API函數

  FindFirst 是找出指定目錄下第一個文件或目錄

  FindNext 一般和FindFirst配合使用用來找出下一個文件或目錄

  FindClose 用來關閉查詢

  (以上函數Delphi在線幫助中有詳盡解釋在此不贅述)

  . 用FileExists函數查找當前目錄

  . 尋找是否有滿足條件的文件存在

  . 依次使各個子目錄成為當前目錄

  . 遞歸調用本函數

  . 釋放資源

  . 返回查詢結果  

  代碼如下

  從搜索記錄中判斷是否是子目錄

  

  function IsValidDir(SearchRec:TSearchRec):Boolean; begin if (SearchRecAttr=) and (SearchRecName<>) and (SearchRecName<>) then Result:=True else Result:=False; end;

  . 這是查詢主體函數

  參數介紹

  

  Mainpath 指定的查詢目錄 Filename 欲查詢的文件 Foundresult 返回的含完整路徑的匹配文件(可能有多個) 如果有匹配文件函數返回True否則返回False;   function SearchFile(mainpath:string; filename:string; var foundresult:TStrings):Boolean; var i:integer; Found:Boolean; subdir:TStrings; searchRec:TsearchRec; begin found:=false; if Trim(filename)<> then begin subdir:=TStringListCreate;//字符串列表必須動態生成 //找出所有下級子目錄 if (FindFirst(mainpath+** faDirectory SearchRec)=) then begin if IsValidDir(SearchRec) then subdirAdd(SearchRecName); while (FindNext(SearchRec) = ) do begin if IsValidDir(SearchRec) then subdirAdd(SearchRecName); end; end; FindClose(SearchRec); //查找當前目錄 if FileExists(mainpath+filename) then begin found:=true; foundresultAdd(mainpath+filename); end; //這是遞歸部分查找各子目錄 for i:= to subdirCount do found:=Searchfile(mainpath+subdirStrings[i]+ \Filenamefoundresult)or found; //資源釋放並返回結果 subdirFree; end; result:=found; end;

 

  總之只要掌握了思路用哪種編程語言都可以實現現在你可以輕松的給你 的系統掛上一個非常使用的功能了


From:http://tw.wingwit.com/Article/program/Delphi/201311/8417.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.