写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中的.
不知为何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中的.
解决方案 »
- 超级难题,高手请进,chart中Tools工具删除的问题?
- cxTreeList问题请教
- 【紧急向高手求助!!】 如何实现一个如文所述的简单DCOM??感激不尽!!!!!100分酬谢!
- 显示桌面怎么找回来?
- 如何将一个label控件的字从上到下的排列?
- 4个三角了,散分1000之4
- 有关rtl60.bpl的问题!(急)
- 用什么函数调用其他可执行程序?能举例说明吗?
- 急!急!急!急!Delphi高手哪儿去了?Delphi6 构建Web Service服务新问题:如何解决多用户并发访问数据库!100分献上!!!!!!
- delphi如何实现设备坐标和逻辑坐标的转换
- 请问有没有预编译开关,可以指定生成的exe的位置?
- 问一个sql简单问题
不会啊~~~ INI可以支持中文的啊。