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

更新于
2026-10-09 06:34:38
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

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

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

我有TTable,正在向其添加CSV文件。有三个字段: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属性设置为您想要活动的索引:

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

CDS.IndexName := 'ndxHits';

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

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

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

我有TTable,正在向其添加CSV文件。有三个字段: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属性设置为您想要活动的索引:

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

CDS.IndexName := 'ndxHits';

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