我收到在TFileStream (.)上创建fs.create对象的访问冲突,但我真的不知道出了什么问题
var
sr: TStreamReader;
fs: TFileStream;
begin
try
fs.Create('aaa.ini',fmOpenRead);
sr := tStreamReader.Create(fs,TEncoding.UTF8);
with connAtomo do begin
Close;
with Params do begin
Clear;
while not sr.EndOfStream do begin
add(sr.ReadLine);
end;
end;
end;
sr.Free;
fs.free
except
on e: EFileStreamError do begin
showmessage('File error '+e.Message);
end;
end;发布于 2020-11-05 13:37:08
访问冲突是由创建TFileStream实例的错误方式造成的,导致fs变量的值无效。与任何其他对象一样,您必须调用类构造函数并将结果分配给变量:fs := TFileStreaM.create('aaa.ini', fmOpenRead);。
我已经修改了你的代码:
var
sr : TStreamReader;
fs : TFileStream;
begin
try
fs := TFileStream.Create('aaa.ini', fmOpenRead);
try
sr := tStreamReader.Create(fs, TEncoding.UTF8);
try
connAtomo.Close;
connAtomo.Params.Clear;
while not sr.EndOfStream do
connAtomo.Params.Add(sr.ReadLine);
finally
sr.Free;
end;
finally
fs.Free
end;
except
on E: EFileStreamError do
ShowMessage('File error ' + E.Message);
end;
end;如您所见,我使用了try/finally来保护分配的对象,并删除不建议使用的with使用。
https://stackoverflow.com/questions/64697895
复制相似问题