我有一个简单的Delphi(2007)程序,给定一个TDataSet和一个(子)字段列表返回一个新的TClientDataSet,其中包含来自给定TDataSet的不同值。
这很有效。
在我的proc中,我使用TClientDataSet索引来填充不同的值。 它快速而简单。
问题是TClientDataSet索引支持最大16 字段。 如果你添加更多,他们将被默默忽略。
我需要数据集中的16个以上的字段(因此在索引中)。
有什么解决方案吗?一些黑客? 也许一些开源库可以作为解决方法使用?
我正在离线工作,所以我必须在记忆中这样做。数据集的大小不是 huge
答案 0 :(得分:1)
如果您需要在超过16个字段中获取不同的记录,并且您希望使用索引来保持快速,则需要考虑连接其中的一些字段。例如:
测试场1场2场3场4 Apple~Banana~Carrot~Donut Apple Banana胡萝卜甜甜圈
在测试字段上创建索引。
如果其他字段的总长度超过文本字段的最大长度,则可能需要创建多个测试字段。
答案 1 :(得分:0)
您可以从JVCL替换TjvCsvDataset的TClientDataSet。它可以用作客户端数据集的纯“内存数据集”替换,无需在磁盘上读取或写入任何CSV文件。
它与设计中的客户端数据集不太相似。我不确定客户端数据集中的所有这些“索引”为您提供了什么好处,除了您没有没有索引定义的字段,但是如果这是您所需要的,则可以设置TJvCsvDataSet .FieldDef property ='Field1,Field2,..... FieldN'然后打开数据集,并根据需要向数据集添加任意数量的行。它实际上仅限于您可以在32位进程中处理的内存量。