Einzelnen Beitrag anzeigen

Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#3

Re: Wie komprimiere ich eine Datenbank "Paradox" &

  Alt 21. Aug 2003, 19:17
Hallo Frank2269,
diese Funktion sollte Dir weiterhelfen. Der Ursprungscode stammt von Andreas Kosch aus dem Buch Delphi 3 Datenbankentwicklung (ISBN 3-7723-4033-4)
Delphi-Quellcode:
function PackTable(var Table: TTable): Boolean;
var
  aCURProps: CURProps;
  aCRTblDesc: CRTblDesc;
  aHDBIDB: HDBIDB;
  OldExclusive: Boolean;
begin
  Result := False;

  with Table do
  begin
    OldExclusive := Exclusive;
    Close;
    Exclusive := True;
    Open;

    Check(DbiGetCursorProps(Handle, aCURProps));

    case aCURProps.iSeqNums of
      // dBASE
      0: begin
           Check(DbiPackTable(DBHandle, Handle, nil, nil, True));
           Result := True;
         end;
      // Paradox
      1: begin
           Close;
           FillChar(aCRTblDesc, SizeOf(aCRTblDesc), #0);
           with aCRTblDesc do
           begin
             StrPCopy(szTblName, Table.TableName);
             bPack := True;
             iFldCount := 0;
           end;
           Check(DbiOpenDatabase(nil, nil, DbiREADWRITE, DbiOpenShared, nil,
                                 0, nil, nil, aHDBIDB));
           Check(DbiSetDirectory(aHDBIDB, PChar(Session.NetFileDir)));
           Check(DbiDoRestructure(aHDBIDB, 1, @aCRTblDesc, nil, nil, nil, False));
           Result := True;
         end;
    else
      begin
      end;
    end;
    Close
    Exclusive := OldExclusive;
    Open;
  end;
end;
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat