如何使用Delphi的TTable组件对CSV文件进行高效排序操作?

2026-04-10 21:122阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计388个文字,预计阅读时间需要2分钟。

如何使用Delphi的TTable组件对CSV文件进行高效排序操作?

我有一张TTable,我正在将CSV文件添加到这张TTable中。有三个字段:Id、Hits路径。我用另一个查询为这个TTable做了一些查找字段。我想排序表。我收到消息功能不支持。当我尝试调用AddIndex()时。

我有一个TTable,我正在加载CSV文件到这个TTable.有三个领域:Id,Hits&路径.
我用另一个查询为这个TTable做了一些查找字段.

我想排序表.我收到消息“功能不受支持”.当我尝试调用AddIndex(‘ndxHits’,’HITS’,[]);

这是我的代码:

with DM.TblCVResults do begin try Active := False; TableName := 'C:\CSV\123.txt'; Active := True; AddIndex('ndxHits','HITS',[]); AddIndex('ndxCandidate','LkCandidate',[]); AddIndex('ndxLastCV','LkLastCV',[]); AddIndex('ndxPostCode','LkPostCode',[]); IndexDefs.Update; Active := True; DM.TblCVResults.IndexName := 'ndxHits'; except on E: Exception do MsgError(E.Message); end; end 您之前提到的问题是您使用ttASCII作为TableType. ttASCII表,AFAIK,不支持索引.

最好的办法是将ttASCII TTable内容加载到TClientDataset`(CDS)中,它支持索引.我没有使用ttASCII表作为源测试,但它应该像下面这样简单:

将TDatasetProvider组件添加到您的应用程序.将它的DataSet属性设置为您的TTable.

将TClientDataSet组件添加到您的应用程序.将它的ProviderName设置为您在上面添加的DataSetProvider. (我在下面的步骤中将其命名为CDS.)

按顺序打开Table和ClientDataSet(CDS).

Table1.Active := True; CDS.Active := True;

如果您不需要,请关闭TTable的更新. (它快得多.)

CDS.LogChanges := False;

运行以下代码以创建索引:

// Repeat for each additional index with CDS.IndexDefs.AddIndexDef do begin Name := 'ndxHits'; Fields := 'Hits'; Options := []; end;

将ClientDataSet的IndexName属性设置为您想要活动的索引:

CDS.IndexName := 'ndxHits';

像使用任何其他数据集一样使用ClientDataSet.使用Locate或FindKey搜索它,使用Insert或Append添加它,过滤它,等等.

如何使用Delphi的TTable组件对CSV文件进行高效排序操作?

本文共计388个文字,预计阅读时间需要2分钟。

如何使用Delphi的TTable组件对CSV文件进行高效排序操作?

我有一张TTable,我正在将CSV文件添加到这张TTable中。有三个字段:Id、Hits路径。我用另一个查询为这个TTable做了一些查找字段。我想排序表。我收到消息功能不支持。当我尝试调用AddIndex()时。

我有一个TTable,我正在加载CSV文件到这个TTable.有三个领域:Id,Hits&路径.
我用另一个查询为这个TTable做了一些查找字段.

我想排序表.我收到消息“功能不受支持”.当我尝试调用AddIndex(‘ndxHits’,’HITS’,[]);

这是我的代码:

with DM.TblCVResults do begin try Active := False; TableName := 'C:\CSV\123.txt'; Active := True; AddIndex('ndxHits','HITS',[]); AddIndex('ndxCandidate','LkCandidate',[]); AddIndex('ndxLastCV','LkLastCV',[]); AddIndex('ndxPostCode','LkPostCode',[]); IndexDefs.Update; Active := True; DM.TblCVResults.IndexName := 'ndxHits'; except on E: Exception do MsgError(E.Message); end; end 您之前提到的问题是您使用ttASCII作为TableType. ttASCII表,AFAIK,不支持索引.

最好的办法是将ttASCII TTable内容加载到TClientDataset`(CDS)中,它支持索引.我没有使用ttASCII表作为源测试,但它应该像下面这样简单:

将TDatasetProvider组件添加到您的应用程序.将它的DataSet属性设置为您的TTable.

将TClientDataSet组件添加到您的应用程序.将它的ProviderName设置为您在上面添加的DataSetProvider. (我在下面的步骤中将其命名为CDS.)

按顺序打开Table和ClientDataSet(CDS).

Table1.Active := True; CDS.Active := True;

如果您不需要,请关闭TTable的更新. (它快得多.)

CDS.LogChanges := False;

运行以下代码以创建索引:

// Repeat for each additional index with CDS.IndexDefs.AddIndexDef do begin Name := 'ndxHits'; Fields := 'Hits'; Options := []; end;

将ClientDataSet的IndexName属性设置为您想要活动的索引:

CDS.IndexName := 'ndxHits';

像使用任何其他数据集一样使用ClientDataSet.使用Locate或FindKey搜索它,使用Insert或Append添加它,过滤它,等等.

如何使用Delphi的TTable组件对CSV文件进行高效排序操作?