写ini文件,发现写入的汉字"女"变成乱码,应该是编码的问题.
不知为何ini文件的编码类型是UPF-8,而不是ANSI,我用的xp系统.
创建ini文件的程序如下:
function CreateHosPatientIni(sInHosCode,sFileName : pchar): integer;
var
   myiniFile : TIniFile;
   sName : string;
begin
   try
      myiniFile := TiniFile.Create(sFileName);
      {取病人基本信息}
      if DataM.OraGquey.Active then
        DataM.OraGquey.Close;
      DataM.OraGquey.SQL.Text := 'select nInHosCode,nInHosID,nPatientID,vPatientName,'+
                                 '       cPatientSex vSex,'+
                                 '       dPatientBirthday,vLinkManTel,vFatherName,'+
                                 '       vMatherName,vIDCard,vNowPostCode,vNowAddress '+
                                 'from y_inhosinformation '+
                                 'where nInHosCode = :nInHosCode';
      DataM.OraGquey.ParamByName('nInHosCode').AsString := sInHosCode;
      DataM.OraGquey.Open;
      if DataM.OraGquey.RecordCount > 0 then
      begin
        sName := Trim(DataM.OraGquey.FieldByName('vPatientName').AsString);
        sName := StringReplace(sName,' ','',[rfReplaceAll]);
        sName := StringReplace(sName,'*','',[rfReplaceAll]);
        myiniFile.WriteString('PatientInfo','nInHosID',DataM.OraGquey.FieldByName('nInHosID').AsString);
        myiniFile.WriteString('PatientInfo','vPatientName',sName);
        myiniFile.WriteString('PatientInfo','dPatientBirthday',FormatDateTime('YYYY-MM-DD', DataM.OraGquey.FieldByName('dPatientBirthday').AsDateTime));
        if DataM.OraGquey.FieldByName('vSex').AsString = '0' then
           myiniFile.WriteString('PatientInfo','vPatientSex','男')
        else if DataM.OraGquey.FieldByName('vSex').AsString = '1' then
           myiniFile.WriteString('PatientInfo','vPatientSex', '女')
        else
           myiniFile.WriteString('PatientInfo','vPatientSex','其他');
        myiniFile.WriteString('PatientInfo','vTelephone',DataM.OraGquey.FieldByName('vLinkManTel').AsString);
        myiniFile.WriteString('PatientInfo','vFatherName',DataM.OraGquey.FieldByName('vFatherName').AsString);
        myiniFile.WriteString('PatientInfo','vMatherName',DataM.OraGquey.FieldByName('vMatherName').AsString);
        myiniFile.WriteString('PatientInfo','nInHosCode',DataM.OraGquey.FieldByName('nInHosCode').AsString);
        myiniFile.WriteString('PatientInfo','vIDCard',DataM.OraGquey.FieldByName('vIDCard').AsString);
        myiniFile.WriteString('PatientInfo','vNowPostCode',DataM.OraGquey.FieldByName('vNowPostCode').AsString);
        myiniFile.WriteString('PatientInfo','vNowAddress',DataM.OraGquey.FieldByName('vNowAddress').AsString);
        Result := 0;//执行成功
      end
      else
        Result := 1; //没找到任何信息
   except
     if myiniFile<>nil then
       FreeAndNil(myiniFile);
     Result := 2; //文件或其它错误
   end;//try
end;
此函数是dll中的.