1

大家好!

我正在使用连接到主从数据集的 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。

4

0 回答 0