VB32ビット用のサンプルです。 このサンプルプログラムは、弊社Webサーバ資料ページ内(http://www.pervasive.co.jp/support/index_Ref.html) 「Microsoft Visual Basic とPervasive.SQL 2000iを使ったアプリケーションの開発」からの抜粋です。  このサンプルで使用しているBtrieveファイルのレイアウトは次の通りです。  [レコードレイアウト]    内容          データ型        バイト数   −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−    メーカID       string      1    マシンID       integer     2    マシンNo.      long        4    マシン名        string      30    定価          long        4    割引率         float       4  [キーの構成]    キー番号  セグメント番号  キーを構成するフィールド  備考   −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−    0     1        メーカID         重複可能    0     2        マシンID         重複可能 [注意事項] ・Btrieveの引数にはString型の項目は渡さないでください。(ユーザ定義の中にも指定しないでください。) 文字が化けたり、保護違反が発生する事があります。  このサンプルでは、Byte型を使用したユーザ定義型とString型を使用したユーザ定義型を使用し、Btrieveに 渡す時とVBで作業する時で使い分けています。 ・VBの32ビット版では、16ビット版と比べユーザ定義型の中でInteger型、Long型等を使用したときの アライメント(メモリー上に記憶されるときの並び方)が変更になっています。このため、ユーザ定義型の 中のInteger型、Long型等はそれぞれByte型の2バイトの配列、Byte型の4バイトの配列で使用しています。 VBで作業するためには、Windows APIのRtlMoveMemoryを使用して、データをコピーします。 例)次のようなユーザ定義型を作成すると、16BitのVisual Basicと32BitのVisual Vasicでは、下記のような メモリ配置となり、データがずれます。(サイズが同じにはなりません。)   Type TEMP    B1 As Byte B2 As Byte    B3 As Byte    L1 As Long   End Type   Global Buf As Temp  Visual Vasic 16Bit版のメモリ配置   0  1  2  3  4  5  6  7   ┌──┬──┬──┬──┬──┬──┬──┐   │ B1 │ B2 │ B3 │  :  L1  :  │   │Byte│Byte│Byte│ L : o : n : g │   │ 型 │ 型 │ 型 │  :  型  :  │   └──┴──┴──┴──┴──┴──┴──┘  Visual Vasic 32Bit版のメモリ配置   0  1  2  3  4  5  6  7  8   ┌──┬──┬──┬──┬──┬──┬──┬──┐   │ B1 │ B2 │ B3 │  │  :  L1  :  │   │Byte│Byte│Byte│遊び│ L : o : n : g │   │ 型 │ 型 │ 型 │Byte│  :  型  :  │   └──┴──┴──┴──┴──┴──┴──┴──┘ ・UniCodeからAnsiCodeへコード変換した後の文字列の長さ(バイト数)を求めるには、     長さ = LenB(StrConv(String型の変数, vbFromUnicode)) としてください。変換前の変数、変換後の変数に対してLenBを実行しても、正しい長さは得られません。 (保護違反が発生する原因となります。)