我现在定义了一个文件流FileStream01=TFileStream.Create(比如说一个已经存在的A.TXT);
之后又对它进行了readbuffer和writebuffer的操作,最后就FileStream01.free.
请问:
这样就对文件的操作和占用完全释放了吗?
我现在在操作文件的过程中出现了异常,但是我敢确定我已经在异常的捕捉后全FileStream01.free了,现在为什么我想把操作过的文件给删除了,系统却提示文件在使用中呢?
之后又对它进行了readbuffer和writebuffer的操作,最后就FileStream01.free.
请问:
这样就对文件的操作和占用完全释放了吗?
我现在在操作文件的过程中出现了异常,但是我敢确定我已经在异常的捕捉后全FileStream01.free了,现在为什么我想把操作过的文件给删除了,系统却提示文件在使用中呢?
解决方案 »
- 关于 CONTEC
- 使用Fastreport替换报表中的值的问题!
- 对Delphi7的编译器了解的朋友请指教。qtintf70.dll是干什么用的?
- 怎么样一个向导程序?
- 判断DLL的存在问题
- 数据表的连接汇总问题
- 我的存储过程控件不能用,为什么?
- 打印机设置问题?请大家都进来谈谈,人人有分!
- 多个TDataAbstractService, connot find default connection.
- 各位大虾,请问如何将数据表中的某些记录数据导出到文件中?
- delphi sql monitor的问题!!!!急急急急,在线等!!!拉兄弟一把!!!!
- ehlib中数据怎样导出为EXCEL和word?
try
.
.
.
finally
.
end可以保证释放
FileStream01=TFileStream.Create
finally
FileStream01.free
FileStream01.Handle:=0;
end;
这样就可以了。保证 释放
还有个问题就是,我定义一个MemoryStream:MS;我在程序中写
if MS=nil then
MS:=MemoryStream.Create();...
...MS.free;
MS:=nil;
没有什么问题?其实我的本意是想判断MS有没有创建,如果有就不创建实例了,没有就创建。我跟踪了一下,开始的时候MS确实是等于nil,但是创建后再释放就不是nil了,所以我就给他等于nil.程序是运行的没有毛病了,但是我也不知道这么写对不对,请大家指教
Free只是销毁一个实例,但是指向这个实例的指针的值并没有改变(虽然这个实例已经不存在了)。
所以,Free后一定要再nil才可以(如果你要再次使用它的话。)