トップページ > プログラム > 2014年04月27日 > Vxdm4tDx

書き込み順位&時間帯一覧

12 位/181 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000013004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【Delphi】Embarcaderoオッチャ その29【C++ビルダ】

書き込みレス一覧

【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でレコード型を宣言する時は、フィールドのパッキング(アライメント)に注意してね。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。