1

我在 a 中使用 blob 字段kbmMemTable来存储我从中开发的自定义组件,TComponent并使用 的 read 和 write 组件流方法将组件TReader读取和写入 blob 字段。中的数据kbmMemTable最终存储在由GpStructuredStorage.

这一直完美无缺,直到我将我的组件(连同kbmMemtable)移动到一个新应用程序并尝试让新应用程序读取 blob 字段。起初我收到组件命名错误(组件名称已存在),但后来当我TReader尝试读取TPersistent组件的属性时,我开始收到访问冲突。

据我所知,关于从文件中检索kbmMemTable数据的方式以及使用. 我没有对组件进行任何更改,而且我存储在同一个表的其他 blob 字段中的其他组件似乎没有任何问题(至少在读取它们时我没有收到任何错误背部)。gpStructuredStorageTReader

我对可能是什么问题感到恼火。任何帮助/建议将不胜感激。我正在使用德尔福 2007。

4

3 回答 3

1

另一个猜测。您的组件名称与其他/不同的名称相冲突。要解决此问题,请始终将您的单位置于其他渴望方的单位之后:例如:

from: SysUtils, YourUnitClass, Classes;
to: SysUtils, Classes, YourUnitClass;

并确保注册您的组件

initialization
  RegisterClasses([TYourComponentClass]);

finalization
  UnRegisterClasses([TYourComponentClass]);

祝你好运

于 2011-01-20T21:43:54.980 回答
0

我终于弄清楚了导致流式传输问题的原因-尽管我不确定为什么,所以也许有人可以解决这个问题。我决定检查问题是否是由我正在使用的一些新的 3rd 方组件引起的,你瞧,当我禁用一个皮肤组件(这将是我的新应用程序的改进!)时,一切正常它应该有。通过禁用我的意思是我没有从程序中删除它,我只是做了它,以便不再使用压缩皮肤来绘制窗口和控件。

于 2011-01-22T01:03:48.000 回答
0

这只是一个猜测,但听起来新应用程序中的组件类定义与您正在流式传输的组件的定义不匹配。

于 2011-01-20T21:08:12.907 回答