我程序功能是把一个地方的文件复制到另个地方。
但是,当我第一次复制成功后,然后在程序外(程序在运行)把复制的文件删除,再
点击按钮执行程序,如果再复制生成的文件与刚才删除的文件名字相同就不行了!!!
我用的FileStream创建了文件
(aStream := TFileStream.Create(afilename, fmCreate, fmShareDenyNone);),
流都释放了的,我看过部分代码如下:
procedure TForm1.VariantToFile(const v: OLEVariant; aFileName: String);
var
aStream:TStream;
aMSTream:TMemoryStream;
begin
try
try
aStream := nil;
if FileExists(afilename) then
begin
aStream := TFileStream.Create(afilename, fmOpenWrite, fmShareDenyNone)
//第二次就是这里出错!我明明已把文件删除,它居然说另一个程序在使用文件,访问出错!
end
else
aStream := TFileStream.Create(afilename, fmCreate, fmShareDenyNone);
aMSTream := TMemoryStream.Create;
VariantToStream(v,aMSTream);
aStream.CopyFrom(aMsTream,aMStream.size);
finally
aStream.Free;
aMStream.Free;
end;
except
Raise Exception.Create('Variant To File Failure');
end;
end;
但是,当我第一次复制成功后,然后在程序外(程序在运行)把复制的文件删除,再
点击按钮执行程序,如果再复制生成的文件与刚才删除的文件名字相同就不行了!!!
我用的FileStream创建了文件
(aStream := TFileStream.Create(afilename, fmCreate, fmShareDenyNone);),
流都释放了的,我看过部分代码如下:
procedure TForm1.VariantToFile(const v: OLEVariant; aFileName: String);
var
aStream:TStream;
aMSTream:TMemoryStream;
begin
try
try
aStream := nil;
if FileExists(afilename) then
begin
aStream := TFileStream.Create(afilename, fmOpenWrite, fmShareDenyNone)
//第二次就是这里出错!我明明已把文件删除,它居然说另一个程序在使用文件,访问出错!
end
else
aStream := TFileStream.Create(afilename, fmCreate, fmShareDenyNone);
aMSTream := TMemoryStream.Create;
VariantToStream(v,aMSTream);
aStream.CopyFrom(aMsTream,aMStream.size);
finally
aStream.Free;
aMStream.Free;
end;
except
Raise Exception.Create('Variant To File Failure');
end;
end;
解决方案 »
- 如何动态生成TreeView?
- Ehlib的Demo1里,DBGridEh1的Vendor Number列STFilter什么都没指定,但在设计期就有下拉箭头,是如何做到的?
- delphi5在windowXP上为什么设断点不起作用?如何解决?
- 安装程序代码?谁有!
- 理解程序出错,郁闷!谁能让我开心?散分!!!
- DBGrid录入数据
- 指点迷津
- 这样的控件怎么装?
- ※※☆★★★★★★欢迎大家参与程序调试,附源代码。★★★★★★☆※※
- 用什么制作帮助文件
- 在DbgridEh中可否增加一个数据库中没有的字段显示文本字符串,并且实现每1秒钟无闪烁的刷新?
- 我用的如同银行的小键盘,我通过spcomm能从键盘上取出数据。现在我要通过电脑把数据发送到小键盘上去,请问如何实现??
var
fn: string;
fs: TFileStream;
begin
fn := 'd:\wang.txt';
if FileExists(fn) then
fs := TFileStream.Create(fn, fmOpenWrite, fmShareDenyNone)
else
fs := TFileStream.Create(fn, fmCreate, fmShareDenyNone);
try
try
fs.Position := 0;
fs.WriteComponent(Self);
except
end;
finally
fs.Free;
end;
end;