Chcę spakować tabele typu Paradox w sposób programowy, mam dwa kody źródłowe, które nie wiem dlaczego u mnie nie działają (mam Delphi 6 Enterprise). Oto te kody. Jeśli ktoś może mi pomóc to z góry wielkie dzięki.
To kod z tego forum:
[code]function PackParadoxTable(Table: TTable): boolean;
var
td: CRTblDesc;
Database: TDatabase;
begin
Result := True;
try
Database := Table.Database;
if Table.Active then Table.Close;
if not Database.Connected then Database.Connected := True;
Result := DBIERR_NA;
FillChar(td, SizeOf(td), 0);
StrPCopy(td.szTblName, Table.TableName);
td.bPack := True;
if DbiDoRestructure(Database.Handle, 1, @td, nil, nil, nil, False) <> DBIERR_NONE then
Result := False;
except
Result := False;
end;
end;[/code]
A to kod ze strony Borlanda:
[code]PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
Check(DbiGetCursorProps(Table.Handle, Props));
if Props.szTableType = szPARADOX then
begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));
end
else
if Props.szTableType = szDBASE then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, TRUE));
Table.Open;
[/code]