掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBで作られたバイナリファイルを読み込むには? (ID:9769)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
アラインメントは、構造体の各要素の区切りの位置です。 たとえば、 type TestRec1 = packed Record a: char; b: single; c: char; d: double; end; TestRec2 = Record a: char; b: single; c: char; d: double; end; という定義をして、 ShowMessage(IntToStr(SizeOf(TestRec1))); ShowMessage(IntToStr(SizeOf(TestRec2))); としてみてください。 それぞれ、14,24と出たと思います。 これは、 a: char; 1バイト b: single; 4バイト c: char; 1バイト d: double; 8バイト ですが、packed指定があると、各要素の間を詰められるため、14となります。 packed指定がないと、ワード境界、ダブルワード境界まで隙間ができます。 a〜bが4バイト。 b〜cが4バイト。 c〜dが8バイト。 確認するには、 Memo1.Lines.Add(IntToStr(Integer(PChar(@a.b)-PChar(@a.a)))); Memo1.Lines.Add(IntToStr(Integer(PChar(@a.c)-PChar(@a.b)))); Memo1.Lines.Add(IntToStr(Integer(PChar(@a.d)-PChar(@a.c)))); というように、ポインタの差を見れば解ります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.