在應(yīng)用實踐中,我們經(jīng)常會用到文件查詢功能。通過Win95中提供的查找功能,我們可以方便的找出磁盤上任何子目錄下的文件,其原因是該查找功能可以遍歷指定目錄下的所有子目錄中的文件。從編程角度講,它實現(xiàn)了子目錄級的文件查詢。其實,這項功能并不難實現(xiàn),關(guān)鍵是能理解并掌握懙莨閽這種程序設(shè)計思路。本人用Delphi實現(xiàn)了該項功能(任意子目錄級),由于使用了懙莨閽,程序思路清晰,代碼量小。
實現(xiàn)方法:
1. 獲取當(dāng)前目錄下的所有下一級子目錄。
2. 存入字符串列表中(Tstrings)。
其中,用到了幾個API函數(shù)。
FindFirst 是找出指定目錄下第一個文件或目錄。
FindNext 一般和FindFirst配合使用,用來找出下一個文件或目錄。
FindClose 用來關(guān)閉查詢。
(以上函數(shù)Delphi在線幫助中有詳盡解釋,在此不贅述);
3. 用FileExists函數(shù)查找當(dāng)前目錄,
4. 尋找是否有滿足條件的文件存在,
5. 依次使各個子目錄成為當(dāng)前目錄,
6. 遞歸調(diào)用本函數(shù),
7. 釋放資源,
8. 返回查詢結(jié)果。
代碼如下:
1.從搜索記錄中判斷是否是子目錄。
function IsValidDir(SearchRec:TSearchRec):Boolean;
begin
if (SearchRec.Attr=16) and
(SearchRec.Name<>'.') and
(SearchRec.Name<>'..') then
Result:=True
else
Result:=False;
end;
實現(xiàn)方法:
1. 獲取當(dāng)前目錄下的所有下一級子目錄。
2. 存入字符串列表中(Tstrings)。
其中,用到了幾個API函數(shù)。
FindFirst 是找出指定目錄下第一個文件或目錄。
FindNext 一般和FindFirst配合使用,用來找出下一個文件或目錄。
FindClose 用來關(guān)閉查詢。
(以上函數(shù)Delphi在線幫助中有詳盡解釋,在此不贅述);
3. 用FileExists函數(shù)查找當(dāng)前目錄,
4. 尋找是否有滿足條件的文件存在,
5. 依次使各個子目錄成為當(dāng)前目錄,
6. 遞歸調(diào)用本函數(shù),
7. 釋放資源,
8. 返回查詢結(jié)果。
代碼如下:
1.從搜索記錄中判斷是否是子目錄。
function IsValidDir(SearchRec:TSearchRec):Boolean;
begin
if (SearchRec.Attr=16) and
(SearchRec.Name<>'.') and
(SearchRec.Name<>'..') then
Result:=True
else
Result:=False;
end;