代码如下
try
FromStr := TFileStream.Create(FromFile, fmOpenRead or fmShareDenyNone);
except
FreeAndNil(FromStr);//这里需要写这段语句吗?即创建失败时,需要释放吗?
Exit;
end;
try
FromStr := TFileStream.Create(FromFile, fmOpenRead or fmShareDenyNone);
except
FreeAndNil(FromStr);//这里需要写这段语句吗?即创建失败时,需要释放吗?
Exit;
end;
解决方案 »
- dbgrid显示序号问题,请高手帮忙解惑,谢谢!!!
- 如何让媒体文件无法直接播放?
- QReport报表页面设置的一个问题
- 如何将字符串类型转成字符类型????????????????????????????????????????????????????????
- 兄弟我现在用一个*.ocx的组件,同样注册在vb中好用,但在delphi中只有一部分功能好用,另外还还有一个*.bas的文件,在delphi中能打开,但
- 三层开发中遇到的严重问题,高分求助
- 关于OpenDialog
- 窗体显示问题
- 在Delphi编程中需要加入库函数,比如我需要使用ShellExecute函数就要加入ShellAPI
- 小妹?^_^?捉虫:在一个窗体中让另一个窗体出现。
- 我的意思是在DBGRID中拖动鼠标,凡是被拖动放的记录显示为蓝色即为选中状态,如何实现多条记录为选中状态?请在虾们邦帮忙!
- 字段的某一位问题
FromStr := TFileStream.Create(FromFile, fmOpenRead or fmShareDenyNone);
Finally
FromStr.free;//这里需要写这段语句吗?即创建失败时,需要释放吗?
FromStr:=Nil;
Exit;
end;
FromStr := TFileStream.Create(FromFile, fmOpenRead or fmShareDenyNone);
try
//FromStr 的其他操作
except
FreeAndNil(FromStr);
Exit;v
end;
try
(操作2)
except
FreeAndNil(FromStr);
Exit;
end;我有个疑问,这个顺序保护的应该是(操作2),而不是(操作1),我试过这样的顺序,但在(操作1)时出错就不会执行except部分的代码,而是直接跳出错误:进程无法访问文件,因为另一个程序正在使用此文件!我知道在执行(操作2)时出现错误需要free是因为(操作1)已经执行成功,即成功create filestream了,所以要free,但在(操作1)时就出现错误,到底需不需要free? (操作1)有没有成功create filestream?
创建不成功,直接报告出错吧, 不用Free,否则,你调用Free那句反倒出错。
2.你也可以这么用.try可以嵌套
try
FromStr := TFileStream.Create(FromFile, fmOpenRead or fmShareDenyNone);(操作1)
try
(操作2)
finally
FreeAndNil(FromStr);
end;
except
ShowMessage('无法创建');
exit;
end;