http://www.csdn.net/expert/Topic/321/321816.shtm
http://www.csdn.net/expert/Topic/286/286689.shtm
http://www.csdn.net/expert/Topic/201/201452.shtm
//使用BDE API函数
uses
  BDE;
var
  CompressTable:TTable;
begin
      CompressTable:=TTable.Create(nil);
      Screen.Cursor:=crHourGlass;
      Path:=ExtractFileDir(FileName);
      DBFileName:=ExtractFileName(FileName);
      CompressTable.DatabaseName:=Path;
      CompressTable.TableName:=DBFileName;
      CompressTable.Exclusive :=true;
      CompressTable.Open;
    dbiPackTable(CompressTable.DBHandle,CompressTable.Handle,nil,szDBASE,true);
    CompressTable.Free;
    Screen.Cursor:=crDefault; 

解决方案 »

  1.   

    以下过程可以对某一数据表作Pack
    procedure PackTable(Table: TTable);
    var
    Props:CURProps;
    begin
    if not Table.Active then
      raise EDatabaseError.Create('数据表必需已经打开');
    if not Table.Exclusive then
      raise EDatabaseError.Create('数据表必需以独占方式打开');
      Check(DbiGetCursorProps(Table.Handle, Props));
    if (Props.szTableType = szDBASE) then
      Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
    else
      raise EDatabaseError.Create('Table必需是dBASE或FoxPro类型');
      Table.Open;
    end;