2

我有一个简单的 Delphi (2007) 过程,它给定一个 TDataSet 和一个(子)字段列表,返回一个新的 TClientDataSet,它具有来自给定 TDataSet的不同值。

这工作得很好。

在我的过程中,我使用 TClientDataSet 索引来填充不同的值。它又快又容易。

问题是 TClientDataSet 索引最多支持 16 个字段。如果您添加更多它们,它们将被默默地忽略。

我需要数据集中超过 16 个字段(因此在索引中)。

有什么解决办法吗?一些黑客?也许一些开源库可以用作解决方法?

我正在离线工作,所以我必须在内存中进行。数据集的大小不是很大

4

2 回答 2

1

如果您需要在超过 16 个字段中获得不同的记录,并且您希望使用索引来保持快速,您需要考虑连接其中一些字段。例如:

测试场 场 1 场 2 场 3 场 4 苹果~香蕉~胡萝卜~甜甜圈 苹果香蕉胡萝卜甜甜圈

在测试字段上创建索引。

如果其他字段的总长度超过文本字段的最大长度,您可能需要创建多个测试字段。

于 2012-01-10T19:10:49.947 回答
0

您可以将 TClientDataSet 换成 JVCL 中的 TjvCsvDataset。它可以用作客户端数据集的纯“内存数据集”替代品,无需在磁盘上读取或写入任何 CSV 文件。

它在设计上不太像客户端数据集。我不确定客户端数据集中的所有这些“索引”会给您带来什么好处,除了您不能拥有没有索引定义的字段,但如果这就是您所需要的,您可以设置 TJvCsvDataSet .FieldDef property = 'Field1,Field2,.....FieldN' 然后打开数据集并向数据集添加任意数量的行。它实际上受限于您可以在 32 位进程中寻址的内存量。

于 2012-01-10T23:29:29.347 回答