产生一个资源保护块
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游戏开发实践指南
[] [] [] []