「構造体」の版間の差分
提供:AB開発Wiki
				
				
				ナビゲーションに移動検索に移動
				
				| 編集の要約なし | 編集の要約なし | ||
| 1行目: | 1行目: | ||
| 構造体を利用すると、複数の様々なデータ型を一つにまとめて管理できます。ABではクラスは参照型なのに対し、構造体は値型です。構造体はC/C++の構造体とビット単位で互換性を持ち、低レベルAPIを操作する場合に有効な手段となります。内部がブラックボックス化されるクラスとは異なり、構造体はデータ配置の順序や型サイズ、アラインメントに気を配りながら扱う必要があります。 | |||
| == 構造体の定義 == | == 構造体の定義 == | ||
|   '''Type''' [Align(''n'')] ''TypeName'' |   '''Type''' [Align(''n'')] ''TypeName'' | ||
| 14行目: | 16行目: | ||
| ''Members | ''Members | ||
| : 構造体を構成するメンバ(複数可)を指定します。"Member As Type" などのように、メンバ名・データ型を指定します。 | : 構造体を構成するメンバ(複数可)を指定します。"Member As Type" などのように、メンバ名・データ型を指定します。 | ||
| === 備考 === | |||
| 小さなデータを扱う場合、値型である構造体は非常に軽い動作を提供してくれますが、大きなデータを扱うときには、データ量に注意しなければなりません。例えば、下記のようなコードは構造体のハードコピーが行われ、構造体サイズが実行速度に影響を及ぼします。 | |||
|  Type DATAINFO | |||
|      a[MAX] As Long | |||
|  End Type | |||
|  Sub Proc( data As DATA ) | |||
|      ... | |||
|  End Sub | |||
|  Dim data As DATA | |||
|  Dim data2 As DATA | |||
|  ... | |||
|  data = data2   'ハードコピーが行われる | |||
|  proc( data )   'ハードコピーが行われる | |||
2007年3月7日 (水) 02:36時点における版
構造体を利用すると、複数の様々なデータ型を一つにまとめて管理できます。ABではクラスは参照型なのに対し、構造体は値型です。構造体はC/C++の構造体とビット単位で互換性を持ち、低レベルAPIを操作する場合に有効な手段となります。内部がブラックボックス化されるクラスとは異なり、構造体はデータ配置の順序や型サイズ、アラインメントに気を配りながら扱う必要があります。
構造体の定義
Type [Align(n)] TypeName
    Members
End Type
項目
n
- アラインメントをバイト単位で指定できます。指定する値は1,2,4,8,16のいずれかでなければなりません。
TypeName
- 構造体の名前を指定します。
Members
- 構造体を構成するメンバ(複数可)を指定します。"Member As Type" などのように、メンバ名・データ型を指定します。
備考
小さなデータを扱う場合、値型である構造体は非常に軽い動作を提供してくれますが、大きなデータを扱うときには、データ量に注意しなければなりません。例えば、下記のようなコードは構造体のハードコピーが行われ、構造体サイズが実行速度に影響を及ぼします。
Type DATAINFO
    a[MAX] As Long
End Type
Sub Proc( data As DATA )
    ...
End Sub
Dim data As DATA
Dim data2 As DATA
...
data = data2   'ハードコピーが行われる
proc( data )   'ハードコピーが行われる
