新しく発言する  EXIT  インデックスへ

構造体、レコード型でのバイナリファイルへ...


  構造体、レコード型でのバイナリファイルへのアクセス 山中和義 2008/02/29 20:42:14  (修正1回)
  つづき 山中和義 2008/02/29 20:42:55  (修正1回)
   └つづき(構造体、レコード型サポート関連) 山中和義 2008/02/29 20:44:04  (修正2回)
    └つづき(構造体定義部分) 山中和義 2008/02/29 20:46:12  (修正1回)
Re: つづき(構造体、レコード型サポート関連)  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/02/29 20:46:12 ** この記事は1回修正されてます
つづき(構造体定義部分)


EXTERNAL SUB StructDef(s$,m$, ofst,sz) !メンバ変数の位置と大きさを得るために構造体を定義する
IF m$<>"" THEN PRINT s$;".";m$;" ="; !※

LET mm$=UCASE$(m$)
SELECT CASE UCASE$(s$)

CASE "BITMAPFILEHEADER"

!Type BITMAPFILEHEADER '14byte
! bfType As String*2 'ファイル識別子 "BM"
! bfSize As Long 'ファイルのサイズ
! bfReserved1 As Integer '未使用
! bfReserved2 As Integer '未使用
! bfOffBits As Long 'ピクセルデータの開始位置
!End Type

LET ofst=0

LET sz=SizeOf("String*2","")
IF mm$=UCASE$("bfType") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF mm$=UCASE$("bfSize") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Integer","")
IF mm$=UCASE$("bfReserved1") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Integer","")
IF mm$=UCASE$("bfReserved2") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF mm$=UCASE$("bfOffBits") THEN EXIT SUB
LET ofst=ofst+sz

IF m$<>"" THEN
PRINT m$;" は ";s$;" のメンバ変数ではありません。"
STOP
END IF


CASE "BITMAPINFOHEADER"

!Type BITMAPINFOHEADER '40byte
! biSize As Long 'ヘッダーのサイズ
! biWidth As Long '幅(ピクセル単位)
! biHeight As Long '高さ(ピクセル単位)
! biPlanes As Integer '常に1
! biBitCount As Integer '1ピクセルあたりのカラービット数
! biCompression As Long '圧縮方法
! biSizeImage As Long 'ピクセルデータの全バイト数
! biXPelsPerMeter As Long '0または水平解像度
! biYPelsPerMeter As Long '0または垂直解像度
! biClrUsed As Long '通常は0
! biClrImportant As Long '通常は0
!End Type

LET ofst=0

LET sz=SizeOf("Long","")
IF mm$=UCASE$("biSize") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF mm$=UCASE$("biWidth") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF mm$=UCASE$("biHeight") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Integer","")
IF mm$=UCASE$("biPlanes") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Integer","")
IF mm$=UCASE$("biBitCount") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF UCASE$(m$)=UCASE$("biCompression") THEN EXIT SUB
LET ofst=ofst+sz

LET sz=SizeOf("Long","")
IF mm$=UCASE$("biSizeImage") THEN EXIT SUB
LET ofst=ofst+sz

     └つづき 山中和義 2008/02/29 20:49:03  (修正1回)
      ├ネストする構造体の場合(親子関係) 山中和義 2008/03/03 13:19:43  (修正2回)
      └SUBStructDefの構造 山中和義 2008/03/04 10:48:06  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。