產生壹個資源保護塊
Delphi提供了壹個保留字finally 用於實現資源的保護
{分配資源}
try
{資源使用情況}
finally
{釋放資源}
end;
try…finally…end就形成了壹個資源保護塊 finally後面的語句是在任何情況下 不論程序是否發生異常 都會執行的
對於( )中的例子如下代碼即可確保所分配內存資源的釋放
var
APointer : Pointer ;
AInt ADiv : Integer;
begin
ADiv := ;
GetMem ( APointer )
try
AInt := div ADiv ;
finally
FreeMem ( Apointer )
end;
end;
下面的例子摘自( )節 是在文件拷貝中實現文件資源的保護
procedure CopyFile(const FileName DestName: TFileName)
var
CopyBuffer: Pointer;
TimeStamp BytesCopied: Longint;
Source Dest: Integer;
Destination: TFileName;
const
ChunkSize: Longint = ;
begin
Destination := ExpandFileName(DestName)
if HasAttr(Destination faDirectory) then
Destination := Destination + \ + ExtractFileName(FileName)
TimeStamp := FileAge(FileName)
GetMem(CopyBuffer ChunkSize)
try
Source := FileOpen(FileName fmShareDenyWrite)
if Source < then
raise EFOpenError Create(FmtLoadStr(SFOpenError [FileName]))
try
Dest := FileCreate(Destination)
if Dest < then
raise EFCreateError Create(FmtLoadStr(SFCreateError [Destination]))
try
repeat
BytesCopied := FileRead(Source CopyBuffer^ ChunkSize)
if BytesCopied > then
FileWrite(Dest CopyBuffer^ BytesCopied)
until BytesCopied < ChunkSize;
finally
FileClose(Dest)
end;
finally
FileClose(Source)
end;
finally
FreeMem(CopyBuffer ChunkSize)
end;
end;
程序的具體解釋見 ( )節
在異常保護的情況下 當異常發生時 系統會自動彈出壹個消息框用於顯示異常的消息 退出當前模塊後異常類自動清除
返回目錄 DELPHI基礎教程
? 編輯推薦
? Java程序設計培訓視頻教程
? J EE高級框架實戰培訓視頻教程
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLE G數據庫開發優化指南
Java程序性能優化 讓妳的Java程序更快 更穩定
C嵌入式編程設計模式
Android遊戲開發實踐指南
lishixinzhi/Article/program/Delphi/201311/25194