Ваш предыдущий вопрос упоминал, что вы использовали 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's
IndexName
индекс, который вы хотите активировать:
CDS.IndexName := 'ndxHits';
Используйте ClientDataSet
, как и любой другой набор данных. Найдите его с помощью Locate
или FindKey
, добавьте к нему с помощью Insert
или Append
, отфильтруйте и т. Д.