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

 我来答
机器1718
2022-11-18 · TA获得超过6754个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:154万
展开全部

   产生一个资源保护块

  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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金山毒霸
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都... 点击进入详情页
本回答由金山毒霸提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式