在TClientDataSet中编码的奇怪的细节数据集备忘录字段

时间:2013-11-28 09:17:10

标签: delphi master-detail tclientdataset memo

美好的一天,所有!

我正在使用连接到master-detail数据集的TClientDataSet。首先,保存数据(用于进一步的数据交换)

cdsImpExp.SaveToFile(aFileName,dfXML);

在获得的文件中,备忘录字段是用内部编码编写的(什么编码,BTW?): T_PATIENTS_MEMO =“!?@ 02:0 4; O MB> 9” - 用于主数据集

T_OBSERVATION_MEMO =“!?@ 02:0 4; O MB> 9” - 用于细节数据集

现在做

cdsImpExp.LoadFromFile(aFileName);

并尝试处理每个字段。对于备忘录内容,我的行为非常奇怪。起初我尝试将theese字段读作:

FieldValue:= Field.AsString;

在主数据集中,memo-field包含所需编码的正确字符串(win-1251)。详细说明数据集memo-field包含与输入文件中相同的char序列(!?@ 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-file中读取详细数据集的备注字段值? 谢谢你的帮助。

我有Delphi XE Update 1。

0 个答案:

没有答案