お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"DbiCreateTableを使ったTableの作成"




 DbiCreateTableを使ってブロックサイズを指定してテーブルを作成するサンプ
ルです。フィールドは一つだけです。ヘルプの見出しの横にDelphiの例というボ
タンがあるのに気付かず、延々もがいたので、(最後には気付きましたが、、)
一応あげておきます。(^^;(こっちの方がもしかすると見通しが良いかもしれな
いので、、)

 各パラメータの意味はヘルプを参照して下さい。

 pOrgDataの部分が何やっているかわかりにくいと思いますが、任意の数のオプ
ションをtblDescのメンバーであるpOptDataにまとめて渡すため、pOptDataに渡
すpOrgData中の何文字目からがそれぞれのoptFieldDescs要素のオプションのも
のなのか、、ということを それぞれのiOffset,iLen指定しています。下示例で
は一つしかオプションをつけてないので簡単ですが、ヘルプの例は三つつけてい
るので、複雑になっています。




procedure TForm1.Button1Click(Sender: TObject);
var
   FieldDescs,optFieldDescs:TFieldDescList;
   FieldCount:integer;
   pOrgData: pBYTE;
   tblDesc:CRTblDesc;
begin
    //40byteの文字列フィールドを一つだけ持ったブロックサイズ32Kのテーブ
ルを
    //作ってみる
    FieldCount:=1; //フィールドの数
    SetLength(FieldDescs, FieldCount);//フィールド設定用パラメータを入れ
る
    FillChar(FieldDescs[0], SizeOf(FieldDescs[0]), 0);//初期化
    //第一フィールド設定
    with FieldDescs[0] do
    begin
      iFldNum :=0;
      szName  :='name';
      iFldType :=fldZSTRING;
      //iSubType
      iUnits1 :=40;
      //iUnits2
      //iOffset
      //iLen
      //iNullOffset
      //efldvVchk
      //efldrRights
      //bCalcField
      //iUnUsed
   end;

    SetLength(optFieldDescs, 1);
    FillChar(optFieldDescs[0], SizeOf(optFieldDescs[0]), 0);

    pOrgData:=AllocMem(20);
    StrPCopy(PChar(pOrgData), '32768'#0);

    with optFieldDescs[0] do
    begin
      iFldNum :=0;
      szName  :='BLOCK SIZE';
      iFldType :=fldZSTRING;
      //iSubType
      //iUnits1
      //iUnits2
      iOffset :=0;
      iLen    :=5;
      //iNullOffset
      //efldvVchk
      //efldrRights
      //bCalcField
      //iUnUsed UINT16  予約
   end;

   FillChar(tblDesc, SizeOf(tblDesc), 0);
   with tblDesc do
   begin
      szTblName    :='c:\tmp\newTable.db';
      szTblType    :=szParadox;//
      //szErrTblName
      //szUserName
      //szPassword
      //bProtected
      iFldCount    :=FieldCount;
      pfldDesc     :=BDE.PFLDDesc(FieldDescs);
      //iIdxCount
      //pidxDesc
      //iSecRecCount
      //psecDesc
      //iValChkCount
      //pvchkDesc
      //iRintCount
      //printDesc
      iOptParams   :=1;
      pfldOptParams :=BDE.PFLDDesc(optFieldDescs);
      pOptData:=pOrgData;
   end;
   Check(DbiCreateTable (Database1.handle,True,tblDesc));
   FreeMem(pOrgData, 20);
end;

                                 99/05/02(日) 16:44 凛(MXB01744)

Original document by 凛              氏 ID:(MXB01744)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum