-2

我对字段有Insufficient memory错误。我需要使用从 0 到 8000 的字符串长度 - 但在填充.TClientDatasetTStringFieldTClientDataset

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

PS最初的任务是将TDBGrid复制到TClientDataset。

4

2 回答 2

0

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

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

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

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

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

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

于 2014-07-02T17:26:01.803 回答
-3

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

PS最初的任务是将TDBGrid复制到TClientDataset。

于 2014-07-02T12:57:22.347 回答