说说你的错误。
BDE可以实现类似foxpro的undelete和pack功能,不过要自己写代码利用BDE API

解决方案 »

  1.   

    你好,我看了你们的留言,我的程序没有出现错误,可是就是没有真正的删除Foxpro德数据,我找了Delphi帮助里面,有一个Dbipacktable的函数吧,它提供了一个例子,如下:
    procedure PackTable(Table: TTable);
    var
      Props: CURProps;
      hDb: hDBIDb;
      TableDesc: CRTblDesc;
    begin
      // Make sure the table is open exclusively so we can get the db handle...
      if not Table.Active then
        raise EDatabaseError.Create('Table must be opened to pack');
      if not Table.Exclusive then    raise EDatabaseError.Create('Table must be opened exclusively to pack');  // Get the table properties to determine table type...
      Check(DbiGetCursorProps(Table.Handle, Props));  // If the table is a Paradox table, you must call DbiDoRestructure...
      if Props.szTableType = szPARADOX then begin
        // Blank out the structure...
        FillChar(TableDesc, sizeof(TableDesc), 0);
        // Get the database handle from the table's cursor handle...    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
        // Put the table name in the table descriptor...
        StrPCopy(TableDesc.szTblName, Table.TableName);
        // Put the table type in the table descriptor...
        StrPCopy(TableDesc.szTblType, Props.szTableType);
        // Set the Pack option in the table descriptor to TRUE...
        TableDesc.bPack := True;
        // Close the table so the restructure can complete...
        Table.Close;
        // Call DbiDoRestructure...    Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
      end
      else
        // If the table is a dBASE table, simply call DbiPackTable...
        if (Props.szTableType = szDBASE) then
          Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
        else
          // Pack only works on PAradox or dBASE; nothing else...
          raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +        'type to pack');  Table.Open;end;但是我的数据表格是Microsoft Foxpro VFP(*类型的阿,这个函数不支持,他支持两种类型,一个是Paradox,一个是Dbase,我把参数szdbase改成szfoxpro也可以,但是在读我的表格的时候,就是不支持,痛苦阿·