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

DELPHI基礎教程:異常處理與程序調試(一)[4]

2013-11-23 17:50:56  來源: Delphi編程 

   產生一個資源保護塊

  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 EFOpenErrorCreate(FmtLoadStr(SFOpenError [FileName]))

  try

  Dest := FileCreate(Destination)

  if Dest < then

  raise EFCreateErrorCreate(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程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  


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