Esta es la solución que he econtrado utilizando una función que no recuerdo ni de donde saqué, se trata de disvincular los índices, así la tabla se puede abrir desde Delphi, obviamente habría que guardar la cabecera antigua para una vez acabada la conexión restaurarla, ese código lo dejo para vosotros.
Código:
procedure MnuDelAllMDX(fname : string);
type
THeader = record
ID,y,m,d : byte;
recs : longint;
hdsize,rsize : word;
dummy : array[1..20] of byte;
end;
Var
hDBF : integer;
Header: THeader;
begin
if MessageDlg('¿Esta seguro de que desea eliminar todos los indices?', mtConfirmation , [mbYes, mbNo],0)=mrYes then
begin
DeleteFile(ChangeFileExt(fname,'.mdx'));
hDBF := FileOpen( fname, fmOpenReadWrite or fmShareDenyNone);
FileRead( hDBF, Header, SizeOf(Header) );
Header.dummy[17] := 0; // no index
FileSeek(hDBF, 0,0);
FileWrite(hDBF, Header, SizeOf(Header) );
FileClose(hDBF);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MnuDelAllMDX('Articulo.dbf');
end;
Un Saludo.