|
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
|