大家好!
我正在使用连接到主从数据集的 TClientDataSet。首先,保存数据(用于进一步的数据交换)
cdsImpExp.SaveToFile(aFileName, dfXML);
在获得的文件中,备忘录字段以内部编码(什么编码,顺便说一句?): T_PATIENTS_MEMO="!?@02:0 4;O MB>9 " - 用于主数据集
T_OBSERVATION_MEMO="!?@02:0 4;O MB>9 " - 用于详细数据集
现在做
cdsImpExp.LoadFromFile(aFileName);
并尝试处理每个领域。对于备忘录字段内容,我的行为非常奇怪。起初,我尝试将这些字段解读为:
字段值 := 字段.AsString;
在主数据集中,备注字段包含所需编码的正确字符串 (win-1251)。详细数据集备注字段包含与输入文件中相同的字符序列 (!?@02:0 4;O MB>9)。好的。我试试这个:
if Field.DataType = ftMemo then
begin
ms := TMemoryStream.Create;
TMemoField(Field).SaveToStream(ms);
ms.Position := 0;
SetString(FieldValue, PChar(ms.Memory), ms.Size);
并且 FieldValue 包含一些像 'Справка㐠㬄伄 этой㼠䀄㸄' (有些字符是正确的,有些字符是日语编码)。
我做错了什么?如何从 xml 文件中读取详细数据集的备注字段值?谢谢你的帮助。
我有德尔福 XE 更新 1。