procedure bcLoadFromFileUTF8(aStrings: TStrings; const aFilename: string);
var
Fs: TFileStream;
Buf: string;
Cp: word;
begin
Fs:= TFileStream.Create(aFilename,fmOpenRead or fmShareDenyNone);
try
SetLength({%H-}Buf,3);
Fs.Read(Buf[1],3);
if Buf = bcUTF8bom then begin
aStrings.LoadFromStream(Fs);
end else begin
Fs.Seek(0,soFromBeginning);
aStrings.LoadFromStream(Fs);
Cp:= bcGuessEncoding(aStrings.Text);
aStrings.Text:= bcEncodeUTF8(aStrings.Text,Cp);
end;
finally Fs.Free; end;
end; { bcLoadFromFileUTF8 }
procedure bcSaveToFileUTF8(aStrings: TStrings; const aFilename: string);
var
Fs: TFileStream;
begin
Fs:= TFileStream.Create(aFilename,fmCreate or fmOpenWrite);
try
Fs.Write(bcUTF8bom[1],length(bcUTF8bom));
aStrings.SaveToStream(Fs);
finally Fs.Free; end;
end; { bcSaveToFileUTF8 }