Vamos a ver. ëste es el texto que tú tienes:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Table1 : TTable;
begin
Table1 := TTable.create(Application);
with Table1 do
begin
Active := False;
DatabaseName := 'C:\prueba';
TableName := 'amigos.dbf';
TableType := ttdBASE;
with FieldDefs do
begin
Clear;
Add('Nombre', ftString, 20, False); Add('Apellido1', ftString, 20, False); Add('Apellido2', ftString, 20, False); end;
CreateTable;
AddIndex('indice1', 'Nombre', [ixExpression]);
end;
end;
Algunas cosillas:
(1) Si eliminas los campos y los vuelves a crear el logico que pierdas los datos. Si quieres crear índices, ¿porqué eliminas los campos?
(2) Algo similar pasará (supongo si haces el CreateTable)
(3) Al crear el segundo campo estás utilizando el nombre de campo
'Apellido2', que seguro que da error ya que el campo se llama: Apellido (eso debe ser un despiste).
(4) Puesto que ya tienes un componente visual llamado Table1, no hace falta que lo definas y que lo crees de nuevo.
(5) Por último y como recomendación, siempre que se generen errores, por favor, descríbelos detalladamentre (pon el texto exacto), eso nos puede dar una idea de lo que está pasando.
Utiliza éste código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do begin
Active := False;
DatabaseName := 'C:\temp\prueba';
TableName := 'amigos.dbf';
TableType := ttdBASE;
AddIndex('indice1', 'Nombre', [ixExpression]);
AddIndex('indice2', 'Apellido1', [ixExpression]);
AddIndex('Indice3', 'Apellido2', [ixExpression]);
end;
end;
Si cuando se ejecute abres la BD con el DataBase desktop, verás que tienes los tres indices creados correctamente.