程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何用Delphi實現子目錄級的文件查詢

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

編輯:Delphi

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

實現方法:

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

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

其中,用到了幾個API函數。

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

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

FindClose 用來關閉查詢。

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

3.用FileExists函數查找當前目錄,

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

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

6.遞歸調用本函數,

7.釋放資源,

8.返回查詢結果。  

代碼如下:

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

function IsValidDir(SearchRec:TSearchRec):Boolean;
begin
if (SearchRec.Attr=16) and
(SearchRec.Name<>'.') and
(SearchRec.Name<>'..') then
Result:=True
else
Result:=False;
end;

2.這是查詢主體函數。

參數介紹:

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved