Создание DBF-файла во время работы приложения

Как создать таблицу из работающего приложения?

Простейший способ – использовать запрос SQL. Таблицы можно создавать с индексом и без индекса.

Небольшой пример:

...
const
  CreateTab = 'CREATE TABLE ';
  IDXTab = 'PRIMARY KEY ';
  MyTabStruct = 'IDX_TAB DECIMAL(6,0), '
    + 'DATE_ DATE, '
    + 'FLD_1 CHARACTER(20), '
    + 'FLD_2 DECIMAL(7, 2), '
    + 'FLD_3 BOOLEAN, '
    + 'FLD_4 BLOB(1, 1), '
    + 'FLD_5 BLOB(1, 2), '
    + 'FLD_6 BLOB(1, 3), '
    + 'FLD_7 BLOB(1, 4), '
    + 'FLD_8 BLOB(1, 5) ';
  ...

function TForm1.CreateTable(TabName, TabStruct, TabIDX: string): boolean;
var
  qyTable: TQuery;
begin
  result := true;
  qyTable := TQuery.Create(Self);
  with qyTable do
    try
      try
        SQL.Clear;
        SQL.Add(CreateTab + TabName + '(' + TabStruct + TabIDX + ')');
        Prepare;
        ExecSQL;    // ExecSQL, а не Open. Иначе ...
      except
        // Обработка ошибок открытия таблицы
        Exception.Create('Ошибка открытия таблицы');
        result := false;
      end;
    finally
      Close;
    end;
end;

// создание таблицы без индекса
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CreateTable('"MYTAB1.DBF"', MyTabStruct, '') then
    ...    // выполняем дальнейшие операции
  else
    ...
end;

// создание таблицы с индексом
procedure TForm1.Button2Click(Sender: TObject);
begin
  if CreateTable('"MYTAB2.DBF"', MyTabStruct, IDXTab + ' (IDX_TAB)') then
    ...    // выполняем дальнейшие операции
  else
    ...
end;
[VS]