The access violation is caused by the wrong way to create a TFileStream instance, resulting is
fs variable having an invalid value. As with any other object, you have to call the class constructor and assign the result to the variable:
fs := TFileStreaM.create('aaa.ini', fmOpenRead);.
I have revised your code:
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;
As you can see, I have used
try/finally to protect the allocated objects and remove the
with usage which is not recommended.
CLICK HERE to find out more related problems solutions.