- 【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
672 :デフォルトの名無しさん[sage]:2014/04/27(日) 20:58:18.88 ID:Vxdm4tDx - まぁ、でも、動的配列の扱いはいずれ避けて通れないからな。
>>667見る限りやってることはなんか受信したデータをどんどん溜めこんでるっぽいから、 TMemoryStreamに突っ込んでってもいいと思うけど。
|
- 【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
674 :デフォルトの名無しさん[sage]:2014/04/27(日) 21:18:12.69 ID:Vxdm4tDx - Copyは、もう1つ動的配列を作る場合に使う。
TIdBytesはbyteの動的配列だから、byte単位で扱うが不便なら、C言語みたく適切なポインタ型にキャストして扱えばいい。 var B: TBytes; P: PByte; begin P := @B[0]; W := PShortInt(P)^; // 先頭の2bytes Inc(P, 2); // ポインタを2バイト進める W := PLongint;(P)^; // 次の4bytes Inc(P, 4); // ポインタを4バイト進める
|
- 【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
675 :デフォルトの名無しさん[sage]:2014/04/27(日) 21:18:52.44 ID:Vxdm4tDx - とかもしくは、レコード型を定義して、それにキャストしてもいい。
type PMyRecord = ^TMyRecrod; TMyRecord = record Field1: Integer; Field2: Shortint; end; で、 var MyRecord: PMyRecord; begin MyRecord := @B[0] MyRecord^.Field1でアクセス
|
- 【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
677 :デフォルトの名無しさん[sage]:2014/04/27(日) 21:33:31.96 ID:Vxdm4tDx - まぁ、君が>>667で@演算子使っるので、ポインタの事を知ってるという前提で書いたけど。
後は、>>675でレコード型を宣言する時は、フィールドのパッキング(アライメント)に注意してね。
|