0

当我尝试将 Stream 加载到 ClientDataSet 时,出现以下异常:

数据包不匹配

ClientDataSet 有几个 WideStringfields,所以我在TStringStream.Create. 如果我离开编码,我会得到一个例外:

字段 XXZ 的类型不匹配;假定:TWideString,实际:String

以下是我的代码:

  importStream := TMemoryStream.Create;
  zipImport.ExtractToStream(importName, importStream);
  importStream.Position := 0;

  data := TStringList.Create;
  data.LoadFromStream(importStream);

  importStream.Free;

  Encoding := TEncoding.Unicode;
  ccpStream := TStringStream.Create(Format(FTemplate.Text, [data.Text]), Encoding);

  try
    try

      cdsCCP_Head.LoadFromStream(ccpStream);
...

在我将 ClientDataSet 转换为它之前,TWideStringField它工作得很好。谁能告诉我我能做些什么来阅读文件?

4

1 回答 1

0

问题是来自ClientDataSet.
要创建新模板:

  1. 转到设计模式并选择ClientDataSet.
  2. 右键单击并“创建数据集”。
  3. 选择“保存到 MyBase Xml UTF8 表...”并保存新生成的 xml。

使用新生成的 Xml,可以正确识别字段,并且正如 @ArnaudBouchez 已经提到的,无需解码流。

于 2013-04-25T08:09:38.310 回答