亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.pas

?? 修改dbf資料庫的好工具.有源碼.對那些仍在使用dos或數據庫為dbase的用戶非常實用.
?? PAS
字號:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, DB, TUtil32, BDE, DBTables;

type

  TBDEUtil = class;

  TMainForm = class(TForm)
    ExitBtn: TButton;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    AliasCombo: TComboBox;
    TableCombo: TComboBox;
    TableLocEdit: TEdit;
    ByDirectBtn: TButton;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    FieldsLB: TLabel;
    RecSizeLB: TLabel;
    IndexLB: TLabel;
    ValidLB: TLabel;
    RefLB: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    RestructLB: TLabel;
    AuxPassLB: TLabel;
    CodePageLB: TLabel;
    BlockSizeLB: TLabel;
    TabLvlLB: TLabel;
    VerifyBtn: TButton;
    RebuildBtn: TButton;
    GroupBox3: TGroupBox;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    MessageLB: TLabel;
    PBHeader: TProgressBar;
    PBIndexes: TProgressBar;
    PBData: TProgressBar;
    PBRebuild: TProgressBar;
    OpenDialog1: TOpenDialog;
    Session1: TSession;
    Database1: TDatabase;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure AliasComboChange(Sender: TObject);
    procedure ByDirectBtnClick(Sender: TObject);
    procedure TableComboChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ExitBtnClick(Sender: TObject);
    procedure VerifyBtnClick(Sender: TObject);
    procedure RebuildBtnClick(Sender: TObject);
    procedure AboutBtnClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    BDEUtil: TBDEUtil;
    procedure OpenDatabaseList;
    procedure SetTableAndDir(ByDirectory: Boolean);
    procedure ClearBars;
    procedure ClearLabels;
    procedure SetTableInfo;
    procedure ClearTable;
    procedure SetTable(TableName: String);
  public
    { Public declarations }
  end;

  TBDEUtil = class
    CbInfo: TUVerifyCallback;
    TUProps: CURProps;
    hDb: hDBIDb;
    vhTSes: hTUSes;
    constructor Create;
    destructor Destroy; override;
    function GetTCursorProps(szTable: String): Boolean;
    procedure RegisterCallBack;
    procedure UnRegisterCallBack;
  end;

var
  MainForm: TMainForm;
  HaveError:boolean;

implementation

uses about;

{$R *.DFM}

function GenProgressCallBack(ecbType: CBType; Data: LongInt; pcbInfo: Pointer):
  CBRType; stdcall;
var
  CBInfo: TUVerifyCallBack;
begin
  CBInfo := TUVerifyCallBack(pcbInfo^);
  if ecbType = cbGENPROGRESS then
    case CBInfo.Process of
     TUVerifyHeader: begin
       MainForm.PBHeader.Position := CBInfo.percentdone;
     end;
     TUVerifyIndex: begin
       MainForm.PBIndexes.Position := CBInfo.percentdone;
     end;
     TUVerifyData: begin
       MainForm.PBData.Position := CBInfo.percentdone;
     end;
     TURebuild: begin
       MainForm.PBRebuild.Position := CBInfo.percentdone;
     end;
    end;

  Result := cbrUSEDEF;
end;


constructor TBDEUtil.Create;
var
  ClientData: Array[0..100] of byte;
begin
  Check(TUInit(vhtSes));
end;

destructor TBDEUtil.Destroy;
begin
  Check(TUExit(vhtSes));
  inherited Destroy;
end;

function TBDEUtil.GetTCursorProps(szTable: String): Boolean;
begin
  if TUFillCURProps(vHtSes, PChar(szTable), TUProps) = DBIERR_NONE then
    Result := True
  else Result := False;
end;

procedure TBDEUtil.RegisterCallback;
begin
 Check(DbiRegisterCallBack(nil, cbGENPROGRESS, 0,
            sizeof(TUVerifyCallBack), @CbInfo, GenProgressCallback));
end;

procedure TBDEUtil.UnRegisterCallback;
begin
  Check(DbiRegisterCallBack(nil, cbGENPROGRESS, 0,
           sizeof(TUVerifyCallBack), @CbInfo, nil));
end;

procedure TMainForm.OpenDataBaseList;
var
  TmpCursor: hDbiCur;
  vDBDesc: DBDesc;
begin
  AliasCombo.Items.Clear;
  Check(DbiOpenDatabaseList(TmpCursor));
  while (DbiGetNextRecord(TmpCursor, dbiNOLOCK, @vDBDesc, nil)
                                      = DBIERR_NONE) do begin
    if vDBDesc.szDBType = 'STANDARD' then
      AliasCombo.Items.Add(vDBDesc.szName);
  end;
  Check(DbiCloseCursor(TmpCursor));
end;

procedure TMainForm.ClearBars;
begin
  MessageLB.Caption := '';
  PBHeader.Position := 0;
  PBIndexes.Position := 0;
  PBData.Position := 0;
  PBRebuild.Position := 0;
end;

procedure TMainForm.ClearLabels;
begin
  FieldsLB.Caption := '0';
  RecSizeLB.Caption := '0';
  IndexLB.Caption := '0';
  ValidLB.Caption := '0';
  RefLB.Caption := '0';
  RestructLB.Caption := '0';
  AuxPassLB.Caption := '0';
  CodePageLB.Caption := '0';
  BlockSizeLB.Caption := '0';
  TabLvlLB.Caption := '0';
end;

procedure TMainForm.ClearTable;
begin
  TableLocEdit.Text := '';
  VerifyBtn.Enabled := False;
  RebuildBtn.Enabled := False;
end;

procedure TMainForm.SetTable(TableName: String);
begin
  TableLocEdit.Text := TableName;
  VerifyBtn.Enabled := True;
  RebuildBtn.Enabled := True;
end;

procedure TMainForm.SetTableAndDir;
var
  vDBDesc: DBDesc;
  Alias: String;
  Table: String;
  DirTable: String;
begin
  Alias := AliasCombo.Items[AliasCombo.ItemIndex];
  Table := TableCombo.Items[TableCombo.ItemIndex];
  Check(DbiGetDatabaseDesc(PChar(Alias), @vDBDesc));
  SetTable(Format('%s\%s', [vDBDesc.szPhyName, Table]));
  ClearBars;
  SetTableInfo();
end;

procedure TMainForm.SetTableInfo;
var
  Buffer,
  Table: String;
begin
  Table := TableLocEdit.Text;
  if BDEUtil.GetTCursorProps(Table) then
  with BDEUtil.TUProps do begin
    FieldsLB.Caption := IntToStr(iFields);
    RecSizeLB.Caption := IntToStr(iRecBufSize);
    IndexLB.Caption := IntToStr(iIndexes);
    ValidLB.Caption := InttoStr(iValChecks);
    RefLB.Caption := IntToStr(iRefIntChecks);
    RestructLB.Caption := IntToStr(iRestrVersion);
    AuxPassLB.Caption := IntToStr(iPasswords);
    CodePageLB.Caption := IntToStr(iCodePage);
    BlockSizeLB.Caption := IntToStr(iBlockSize);
    TabLvlLB.Caption := IntToStr(iTblLevel);
  end;
end;


procedure TMainForm.FormCreate(Sender: TObject);
begin
  Session1.Active := True;
  OpenDatabaseList;
  BDEUtil := TBDEUtil.Create;
end;

procedure TMainForm.AliasComboChange(Sender: TObject);
begin
//  Database1.Connected := False;
//  Database1.AliasName := AliasCombo.Items[AliasCombo.ItemIndex];
//  DataBase1.Connected := True;
  Session1.GetTableNames(AliasCombo.Items[AliasCombo.ItemIndex], '*.*',
    True, False, TableCombo.Items);
  ClearBars;
  ClearLabels;
  ClearTable;
end;

procedure TMainForm.ByDirectBtnClick(Sender: TObject);
begin
 if OpenDialog1.Execute then begin
   SetTable(OpenDialog1.FileName);
   AliasCombo.ItemIndex := -1;
   TableCombo.Items.Clear;
   ClearBars;
   SetTableInfo;
 end;
end;

procedure TMainForm.TableComboChange(Sender: TObject);
begin
  SetTableAndDir(False);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  BDEUtil.Free;
end;

procedure TMainForm.ExitBtnClick(Sender: TObject);
begin
  Close;
end;

procedure TMainForm.VerifyBtnClick(Sender: TObject);
var
  Msg: Integer;
  Table: String;
  L: Integer;
begin
  HaveError:=false;
  Screen.Cursor := crHourGlass;
  try
    ClearBars;
    Table := TableLocEdit.Text;
    Check(TUExit(BDEUtil.vHtSes));
    Check(TUInit(BDEUtil.vHtSes));
    BDEUtil.RegisterCallBack;
    try
      if TUVerifyTable(BDEUtil.vHtSes, PChar(Table), szPARADOX, 'VERIFY.DB',
           nil, 0, Msg) = DBIERR_NONE then begin
      case Msg of
        0: MessageLB.Caption := 'Verification Successful. Table has no errors.';
        1: MessageLB.Caption := 'Verification Successful. Verification completed.';
        2: MessageLB.Caption := 'Verification Successful. Verification could not be completed.';
        3: MessageLB.Caption := 'Verification Successful. Table must be rebuild manually.';
        4: MessageLB.Caption := 'Verification Successful. Table cannot be rebuilt.';
      else
        MessageLB.Caption := 'Verification unsuccessful.';
      end;
      case Msg of
        0: MessageLB.Caption := 'Verification Successful. Table has no errors.';
        1: HaveError:=true;
        2: HaveError:=true;
        3: HaveError:=true;
        4: HaveError:=true;
      else
        HaveError:=true;
      end;
      end;
    finally
      BDEUtil.UnRegisterCallBack;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TMainForm.RebuildBtnClick(Sender: TObject);
var
  iFld, iIdx, iSec, iVal, iRI, iOptP, iOptD: word;
  szTable: String;
  rslt: DBIResult;
  Msg: Integer;
  TblDesc: CRTBlDesc;
  Backup: String;
begin
  Screen.Cursor := crHourGlass;
  try
    ClearBars;
    Check(TUExit(BDEUtil.vHtSes));
    Check(TUInit(BDEUtil.vHtSes));
    szTable := TableLocEdit.Text;
    BDEUtil.RegisterCallBack;
    try
      Check(TUVerifyTable(BDEUtil.vHtSes, PChar(szTable), szPARADOX, 'VERIFY.DB',
           nil, 0, Msg));
      rslt := TUGetCRTblDescCount(BDEUtil.vhTSes, PChar(szTable), iFld,
            iIdx, iSec, iVal, iRI, iOptP, iOptD);
      if rslt = DBIERR_NONE then begin
        FillChar(TblDesc, SizeOf(CRTBlDesc), 0);
        StrPCopy(TblDesc.szTblName, szTable);
        TblDesc.szTblType := szParadox;
        TblDesc.szErrTblName := 'Rebuild.DB';

        TblDesc.iFldCount := iFld;
        GetMem(TblDesc.pFldDesc, (iFld * SizeOf(FldDesc)));

        TblDesc.iIdxCount := iIdx;
        GetMem(TblDesc.pIdxDesc, (iIdx * SizeOf(IdxDesc)));

        TblDesc.iSecRecCount := iSec;
        GetMem(TblDesc.pSecDesc, (iSec * SizeOf(SecDesc)));

        TblDesc.iValChkCount := iVal;
        GetMem(TblDesc.pvchkDesc, (iVal * SizeOf(VCHKDesc)));

        TblDesc.iRintCount := iRI;
        GetMem(TblDesc.printDesc, (iRI * SizeOf(RINTDesc)));

        TblDesc.iOptParams := iOptP;
        GetMem(TblDesc.pfldOptParams, (iOptP * sizeOf(FLDDesc)));

        GetMem(TblDesc.pOptData, (iOptD * DBIMAXSCFLDLEN));
        try
           rslt := TUFillCRTblDesc(BDEUtil.vhTSes, @TblDesc, PChar(szTable), nil);
           if rslt = DBIERR_NONE then begin
             Backup := 'Backup.Db';
             if TURebuildTable(BDEUtil.vhTSes, PChar(szTable), szPARADOX,
                 PChar(Backup), 'KEYVIOL.DB', 'PROBLEM.DB', @TblDesc) = DBIERR_NONE
             then MessageLB.Caption := 'Rebuild was successful.'
             else MessageLB.Caption := 'Rebuild was not successful.';
           end
           else
             MessageDlg('Error Filling table structure', mtError, [mbok], 0);
        finally
          FreeMem(TblDesc.pFldDesc, (iFld * SizeOf(FldDesc)));
          FreeMem(TblDesc.pIdxDesc, (iIdx * SizeOf(IdxDesc)));
          FreeMem(TblDesc.pSecDesc, (iSec * SizeOf(SecDesc)));
          FreeMem(TblDesc.pvchkDesc, (iVal * SizeOf(VCHKDesc)));
          FreeMem(TblDesc.printDesc, (iRI * SizeOf(RINTDesc)));
          FreeMem(TblDesc.pfldOptParams, (iOptP * sizeOf(FLDDesc)));
          FreeMem(TblDesc.pOptData, (iOptD * DBIMAXSCFLDLEN));
        end;
      end;
    finally
      BDEUtil.UnRegisterCallBack;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TMainForm.AboutBtnClick(Sender: TObject);
begin
  AboutForm.ShowModal;
end;

procedure TMainForm.FormActivate(Sender: TObject);
var i:integer;
begin
  ClearBars;
  ClearLabels;
  ClearTable;

end;

procedure TMainForm.Button1Click(Sender: TObject);
var i:integer;
begin
   for i:=0 to TableCombo.items.count-1 do
   begin
      TableCombo.itemindex:=i;
      SetTableAndDir(False);
      Application.processmessages;
      VerifyBtnClick(Sender);
      Application.processmessages;
      if HaveError then
      begin
      RebuildBtnClick(Sender);
      Application.processmessages;
      end;
   end;
   close;
end;

end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老司机一区二区| 在线观看91精品国产麻豆| 丝袜美腿亚洲一区二区图片| 中文字幕一区二区三区精华液| 日韩午夜激情av| 蜜臀久久99精品久久久久宅男| 91在线看国产| 菠萝蜜视频在线观看一区| 丰满少妇在线播放bd日韩电影| 国产精品一品视频| 国产激情一区二区三区四区| 成人激情小说乱人伦| 99久久免费精品高清特色大片| 94色蜜桃网一区二区三区| 91美女在线观看| 欧美亚洲一区三区| 5858s免费视频成人| 日韩免费观看高清完整版| 久久久国产精品午夜一区ai换脸| 国产日韩欧美一区二区三区乱码 | 国产激情视频一区二区三区欧美| 国产自产高清不卡| 成人国产电影网| 欧美在线观看禁18| 91麻豆高清视频| 国产一区 二区 三区一级| 久久精品99国产精品日本| 国产一区二区在线视频| 99久久99精品久久久久久| 欧美日本国产一区| xfplay精品久久| 亚洲男同1069视频| 青青草国产精品亚洲专区无| 国产成人精品亚洲午夜麻豆| 日本韩国欧美国产| 久久久久久97三级| 亚洲一区二三区| 国产精品伊人色| 欧美日韩久久久一区| 精品免费国产一区二区三区四区| 欧美激情一区二区三区蜜桃视频| 一区二区三区不卡在线观看 | 欧美午夜视频网站| 久久欧美一区二区| 天堂久久一区二区三区| 99久久精品免费看国产| 精品成人佐山爱一区二区| 亚洲高清三级视频| 成人a区在线观看| 欧美电影免费观看完整版| 一区二区三区免费在线观看| 国产精品99久| 精品少妇一区二区三区日产乱码 | 欧美在线视频日韩| 国产日产亚洲精品系列| 青娱乐精品视频| 在线观看网站黄不卡| 国产精品亲子伦对白| 精油按摩中文字幕久久| 91麻豆精品国产自产在线| 一区二区三区视频在线观看| 国产综合色视频| 日韩一区二区三区电影| 91官网在线免费观看| 欧美日韩国产bt| 亚洲综合小说图片| 色狠狠色噜噜噜综合网| 亚洲电影一区二区三区| 成人久久久精品乱码一区二区三区| 日韩视频国产视频| 日韩高清一区二区| 9191精品国产综合久久久久久| 亚洲一区在线观看免费| 色婷婷综合久久久久中文| 国产精品三级av在线播放| 极品尤物av久久免费看| 精品日韩一区二区三区免费视频| 天堂成人免费av电影一区| 欧美日本国产一区| 日日夜夜精品视频天天综合网| 欧美性一二三区| 午夜在线电影亚洲一区| 欧美日本高清视频在线观看| 午夜不卡av在线| 久久久99精品久久| 日韩一级大片在线观看| 亚洲已满18点击进入久久| 99热99精品| 日韩一区在线免费观看| 99久久精品免费看国产| 一区二区三区欧美久久| 欧美三级午夜理伦三级中视频| 亚洲自拍偷拍九九九| 欧美日韩国产美| 久久精品国产久精国产| 久久综合久久综合久久| 成人av在线影院| 亚洲一二三四在线| 欧美一区二区三区色| 国产一区二区久久| 亚洲婷婷国产精品电影人久久| 欧美自拍偷拍一区| 日av在线不卡| 国产亚洲精品超碰| 色狠狠桃花综合| 蜜臀av性久久久久蜜臀aⅴ | 亚洲欧美日韩电影| 在线一区二区视频| 卡一卡二国产精品| 天天综合天天综合色| 国产成人精品一区二区三区网站观看| 欧美视频在线一区二区三区| 一区二区久久久久久| 91精品免费在线| 国产ts人妖一区二区| 亚洲特级片在线| 日韩一区二区电影网| www.久久精品| 理论片日本一区| 一区二区三区在线视频免费 | 男女激情视频一区| 国产精品萝li| 欧美电影免费观看完整版| 99亚偷拍自图区亚洲| 免费成人在线影院| 亚洲精品菠萝久久久久久久| 日韩欧美精品在线| 欧美日韩亚洲综合| 国产精品国产三级国产aⅴ入口| 日韩免费福利电影在线观看| 狠狠色伊人亚洲综合成人| 艳妇臀荡乳欲伦亚洲一区| 国产日韩高清在线| 日韩限制级电影在线观看| 在线观看亚洲精品视频| 国产经典欧美精品| 极品美女销魂一区二区三区免费| 亚洲午夜一区二区| 亚洲三级小视频| 中文字幕电影一区| xfplay精品久久| 日韩精品一区二区三区中文精品| 在线免费亚洲电影| av在线一区二区| 丁香五精品蜜臀久久久久99网站| 狂野欧美性猛交blacked| 性感美女久久精品| 午夜婷婷国产麻豆精品| 亚洲免费观看高清完整版在线观看| 久久天堂av综合合色蜜桃网| 日韩一级黄色片| 欧美一区二区不卡视频| 欧美区在线观看| 欧美日韩你懂的| 欧美国产日本韩| 国产精品欧美一区二区三区| 久久久久久夜精品精品免费| 欧美大片在线观看一区| 日韩一二在线观看| 日韩欧美成人一区| 日韩欧美一区在线| 欧美刺激脚交jootjob| 日韩精品一区二区三区在线观看| 3d动漫精品啪啪1区2区免费| 欧美午夜片在线看| 欧美精品视频www在线观看| 欧美喷水一区二区| 在线不卡中文字幕播放| 日韩一区二区视频| 久久久99精品免费观看不卡| 国产欧美精品日韩区二区麻豆天美 | 亚洲综合一区二区精品导航| 一区二区三区日本| 日本三级亚洲精品| 韩国欧美国产一区| 不卡视频在线看| 色欧美片视频在线观看在线视频| 成人午夜视频免费看| 日韩欧美中文一区二区| 久久网站热最新地址| av中文字幕不卡| 欧美伊人久久久久久久久影院| 欧美性猛交xxxx乱大交退制版| 欧美日韩中字一区| 欧美mv日韩mv| 亚洲欧美在线视频| 喷白浆一区二区| 懂色av中文字幕一区二区三区| 91视频免费观看| 91精品免费在线| 国产精品乱人伦一区二区| 亚洲成人资源网| 国产精品77777竹菊影视小说| 91在线观看美女| 日韩精品影音先锋| 亚洲精品免费在线| 国产精品77777| 欧美性欧美巨大黑白大战| 久久久久88色偷偷免费| 亚洲国产精品久久久久婷婷884|