其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:异常处理与程序调试(一)[4]


发布日期:2018年03月07日
 
DELPHI基础教程:异常处理与程序调试(一)[4]

产生一个资源保护块

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游戏开发实践指南

[] [] [] []

               

上一篇:DELPHI基础教程:Delphi应用程序的应用(二)[2]

下一篇:DELPHI基础教程:异常处理与程序调试(一)[3]