我的Insufficient memory
字段TClientDataset
出现TStringField
错误。我需要使用0到8000之间的字符串长度 - 但是在填充TClientDataset
之前不知道长度是多少。
那么,可以使用动态TStringField
创建Size
吗?
P.S。最初的任务是将TDBGrid复制到TClientDataset。
答案 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。