可以使用动态大小创建TStringField吗?

时间:2014-07-02 11:29:43

标签: delphi tclientdataset tstringfield

我的Insufficient memory字段TClientDataset出现TStringField错误。我需要使用0到8000之间的字符串长度 - 但是在填充TClientDataset之前不知道长度是多少。

那么,可以使用动态TStringField创建Size吗?

P.S。最初的任务是将TDBGrid复制到TClientDataset。

2 个答案:

答案 0 :(得分:0)

您在这些字段中存储的数据类型最多需要8000个字符?

想象一下,您使用通配符对这些字段进行部分搜索。我敢打赌,这样的搜索会花费很长时间,甚至可能会使数据库服务器崩溃。

除此之外,并非所有数据库表都支持8192个字符大小的StringField。

http://docwiki.embarcadero.com/Libraries/XE6/en/Data.DB.TStringField

  

TStringField封装了字段常用的基本行为   包含字符串数据。字符串字段的值是物理的   存储为最多8192个字符的序列。但是,有些表   类型可能只支持较小维度的字符串字段。

那么为什么不使用TMemoFields,因为它们的文本大小都是动态的? http://docwiki.embarcadero.com/Libraries/XE6/en/Data.DB.TMemoField

答案 1 :(得分:-3)

我使用了以下解决方案。首先,根据Sizes计算最大Length(aDBGrid.Columns[i].Field.DisplayText)。然后使用计算出的TStringFields创建Sizes

P.S。最初的任务是将TDBGrid复制到TClientDataset。