No se si funcionará desde D2, pero mírate estas funciones:
Código Delphi
[-]
uses
DBTables, SYSUtils;
function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
implementation
uses
DB, BDE;
function RestructureParadoxTable(Table : TTable; Option, OptData: String) : Boolean;
var
hDb: hDBIDb;
Res : DBIResult;
TableDesc : CRTblDesc;
FieldDesc : FLDDesc;
begin
If (Table.Active and Not Table.Exclusive) Then Table.Close;
If (Not Table.Exclusive) Then Table.Exclusive := True;
If (Not Table.Active) Then Table.Open;
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
Table.Close;
FillChar(TableDesc, SizeOf(TableDesc), 0);
StrPCopy(TableDesc.szTblName, Table.Tablename);
StrCopy(TableDesc.szTblType, szParadox);
FieldDesc.iOffset := 0;
FieldDesc.iLen := Length(OptData) + 1;
StrPCopy(FieldDesc.szName, Option);
TableDesc.iOptParams := 1;
TableDesc.pFldOptParams := @FieldDesc;
TableDesc.pOptData := @OptData[1];
try
Res := DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False);
Result := (Res = DBIERR_NONE);
finally
Table.Open;
end;
end;
function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);
Result := RestructureParadoxTable(MyTable, 'LEVEL', IntToStr(Version));
MyTable.Free;
end;
function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);
Result := RestructureParadoxTable(MyTable, 'BLOCK SIZE', IntToStr(BlockSize));
MyTable.Free;
end;
function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);
If (StrictIntegrity) Then
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'TRUE')
else
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'FALSE');
MyTable.Free;
end;
function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);
Result := RestructureParadoxTable(MyTable, 'LANGDRIVER', LangDriver);
MyTable.Free;
end;
end.
Un Saludo.