为什么 TFDMemTable->SaveToStream() 会抛出 AV

Why does TFDMemTable->SaveToStream() throw an AV

提问人:MathewJoy 提问时间:2/3/2023 更新时间:2/9/2023 访问量:32

问:

我正在尝试转换为JSON字符串。我正在尝试使用函数,但它抛出空访问冲突。TFDMemTableSaveToStream

项目 XXX 引发了异常类 $C 0000005,并显示消息“访问 违反0x545c8d4f:读取地址 0x00000008'。

以下为可重现代码:

  TFDMemTable *fd = new TFDMemTable(NULL);

  TFieldDef *Field = fd->FieldDefs->AddFieldDef();
  Field->Name = "Name";
  Field->DataType = Db::ftString;
  Field->Size = 100;

  fd->Open();
  fd->Insert();

  fd->FieldByName("Name")->AsString = "Johnny";

  fd->Post();

  TStringStream *Stream = new TStringStream();

  fd->SaveToStream(Stream, sfJSON); 

我尝试删除一个,也尝试使用字符串创建。TFDStanStorageJSONLinkTStringStream

集成开发环境:Rad Studio 11.1。在从 10.1 Berlin 升级之前,我们有一个类似的工作代码段。谢谢。

++builder C ++Builder-11-亚历山大

评论


答:

0赞 MathewJoy 2/9/2023 #1

上面的代码很好,问题出在升级的项目文件上。如果我尝试一个新项目,它就可以工作了。最终创建了一个新的项目文件。我的升级哇还在继续。