用Delphi編寫DelTree程式 (轉)
用Delphi編寫DelTree程式 (轉)[@more@]
提供了關於操作的許多,其中關於目錄操作的有目錄的建立與刪除、設定當前目錄、獲取當前目錄等。目錄的刪除有函式(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對於非空目錄則不能刪除。要實現刪除整個目錄樹(DelTree)必須編寫來刪除其中的子目錄和檔案。
目錄中的檔案可以透過函式DeleteFile來刪除,但對於特殊檔案(只讀、、隱藏等)則不能有效刪除,必須更改檔案屬性為普通檔案才能刪除。更改檔案屬性可以用函式FileSetAttr,這裡將特殊檔案的屬性設定為普通檔案屬性(屬性值為0)。
考慮到樹型目錄結構最適合於遞迴方法,所有這裡用遞迴演算法來實現DelTree函式。下面是具體實現程式。
//path是需刪除的目錄路徑
//目錄成功刪除返回True,否則返回False
function TForm1.Deltree (path : string): Boolean ;
var
SearchRec: TSearchRec;
begin
//判斷目錄是否存在
if DirectoryExists(path) then
begin
//進入該目錄,刪除其中的子目錄和檔案
oldDir := GetCurrentDir;
ChDir(path);
//查詢目錄中所有任何檔案
FindFirst(′?.?′, faAnyFile, SearchRec);
repeat
//修改檔案屬性為普通屬性值
FileSetAttr(SearchRec.Name,0);
//如果是目錄並且不是.和..則遞迴呼叫DelTree
if(SearchRec.Attr and faDirectory > 0) then
begin
if(SearchRec.Name[1]<>′.′) then
if(not Deltree(SearchRec.Name)) then
break;
end
//如果是檔案直接刪除
else
if(not DeleteFile(SearchRec.Name))then
break ;
//繼續查詢,直到最後
until (FindNext(SearchRec)<>0) ;
//回到父目錄,刪除該目錄
ChDir(′..′);
Result := ReMoveDir(path);
SetCurrentDir(oldDir);
end
else
Result := False ;
end ;
該程式在 98、Delphi 4.0下編譯透過。
提供了關於操作的許多,其中關於目錄操作的有目錄的建立與刪除、設定當前目錄、獲取當前目錄等。目錄的刪除有函式(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對於非空目錄則不能刪除。要實現刪除整個目錄樹(DelTree)必須編寫來刪除其中的子目錄和檔案。
目錄中的檔案可以透過函式DeleteFile來刪除,但對於特殊檔案(只讀、、隱藏等)則不能有效刪除,必須更改檔案屬性為普通檔案才能刪除。更改檔案屬性可以用函式FileSetAttr,這裡將特殊檔案的屬性設定為普通檔案屬性(屬性值為0)。
考慮到樹型目錄結構最適合於遞迴方法,所有這裡用遞迴演算法來實現DelTree函式。下面是具體實現程式。
//path是需刪除的目錄路徑
//目錄成功刪除返回True,否則返回False
function TForm1.Deltree (path : string): Boolean ;
var
SearchRec: TSearchRec;
begin
//判斷目錄是否存在
if DirectoryExists(path) then
begin
//進入該目錄,刪除其中的子目錄和檔案
oldDir := GetCurrentDir;
ChDir(path);
//查詢目錄中所有任何檔案
FindFirst(′?.?′, faAnyFile, SearchRec);
repeat
//修改檔案屬性為普通屬性值
FileSetAttr(SearchRec.Name,0);
//如果是目錄並且不是.和..則遞迴呼叫DelTree
if(SearchRec.Attr and faDirectory > 0) then
begin
if(SearchRec.Name[1]<>′.′) then
if(not Deltree(SearchRec.Name)) then
break;
end
//如果是檔案直接刪除
else
if(not DeleteFile(SearchRec.Name))then
break ;
//繼續查詢,直到最後
until (FindNext(SearchRec)<>0) ;
//回到父目錄,刪除該目錄
ChDir(′..′);
Result := ReMoveDir(path);
SetCurrentDir(oldDir);
end
else
Result := False ;
end ;
該程式在 98、Delphi 4.0下編譯透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用Delphi編寫安裝程式(1) (轉)
- 用 Delphi 編寫 VxD 裝置驅動程式(轉) (轉)
- 用Delphi編寫塗鴉桌面的小程式 (轉)
- 用Delphi編寫點對點傳檔案程式(1) (轉)
- 用Delphi編寫點對點傳檔案程式(2) (轉)
- 使用Delphi,SDK編寫Windows簡單程式 (轉)Windows
- Delphi編寫網路程式的安全措施 (轉)
- 利用DELPHI編寫WINDOWS外殼 (轉)Windows
- 防止用DeDe軟體反編譯delphi程式 (轉)編譯
- 利用Delphi編寫IE擴充套件 (轉)套件
- 用VC++編寫CGI程式 (轉)C++
- 用VB編寫抽獎程式 (轉)
- 利用Delphi編寫Windows外殼擴充套件 (轉)Windows套件
- Delphi源程式格式書寫規範 (轉)
- 排除Delphi5中編寫COM+程式的一個錯誤 (轉)
- 用VB編寫標準CGI程式 (轉)
- 用 C++Builder 編寫 Tray 程式 (轉)C++UI
- 初學 Delphi 嵌入彙編[26] - 大小寫字母轉換
- 在Delphi中編寫控制元件的基本方法 (轉)控制元件
- 用VC++6.0編寫撥號程式 (轉)C++
- 為Linux 應用程式編寫 DLL(轉)Linux
- 在Delphi中編寫控制元件的基本方法(1) (轉)控制元件
- 利用Delphi編寫IE擴充套件套件
- 一個用delphi寫的整合彙編與api的簡單的視窗程式API
- 編寫Linux實用程式的藝術(轉)Linux
- 用BCB編寫身份證號識別程式 (轉)
- Delphi寫小執行程式行程
- 使用Delphi呼叫C++編寫的DLLC++
- 用Java編寫ASP元件 (轉)Java元件
- 用Excel編寫小遊戲 (轉)Excel遊戲
- Delphi實用程式設計經驗二 (轉)程式設計
- 用C#Builder編寫螢幕保護程式 (轉)UI
- Delphi使用VB編寫的ActiveX控制元件全攻略 (轉)控制元件
- 用匯編編寫DOS下的記憶體駐留程式(5) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(3) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(4) (轉)記憶體
- Delphi編碼標準——元件命名 (轉)元件
- 用C語言編寫Linux實用程式的藝術(轉)C語言Linux