var
ini : TMemIniFile;
sBuf , sName : String;
FM : TFileStream;
bIsUTF : Boolean;
begin
SetLength(sName, MAX_PATH);
FillChar(Pointer(sName)^ , MAX_PATH, 0);
Windows.GetTempPath(MAX_PATH, Pointer(sName));
sName := Trim(sName) + 'temp_1.0.ini';
FM := TFileStream.Create('e:\d.ini' , fmOpenRead);
if FM.Size=0 then begin
FM.Free;
exit;
end;
SetLength(sBuf, FM.Size);
FM.Read(Pointer(sBuf)^, FM.Size);
FM.Free;
bIsUTF := Copy(sBuf , 1 , 3) = #$EF#$BB#$BF;
if bIsUTF then begin
Delete(sBuf , 1 , 3);
sBuf := UTF8Decode(sBuf);
end;
FM := TFileStream.Create(sName, fmCreate);
FM.WriteBuffer(Pointer(sBuf)^ , Length(sBuf));
FM.Free;
ini := TMemIniFile.Create(sName);
ini.WriteString('sys', 'Name' , 'V汉字文才能体现UTF8lue');
ini.UpdateFile;
ini.Free;
FM := TFileStream.Create(sName, fmOpenRead);
SetLength(sBuf, FM.Size);
FM.Read(Pointer(sBuf)^, FM.Size);
FM.Free;
DeleteFile(sName);
if bIsUTF then begin
sBuf := UTF8Encode(sBuf);
sBuf := #$EF#$BB#$BF + sBuf;
end;
FM := TFileStream.Create('e:\d.ini' , fmCreate);
FM.WriteBuffer(Pointer(sBuf)^ , Length(sBuf));
FM.Free;
end;