トップページ > プログラム > 2014年04月27日 > Q+0O3D4/

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

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



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

書き込みレス一覧

【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
667 :デフォルトの名無しさん[sage]:2014/04/27(日) 19:31:33.96 ID:Q+0O3D4/
TIdTCPClient を使ってデータの受信をしています。
受信したデータをTIdBytesに保存して、実際に使う変数等に移していますが、access violationが出てしまいます。

var
mybuff: TIdBytes;
mypos: TIdBytes;
begin
SetLength(mybuff,128);
mypos := @mybuff[60];
mypos := @mybuff[64]; // <- エラー

実際のコードは

procedure SetData(var dat:WORD,buf:TIdBytes,var size:WORD);

pos := 0;
SetData(dat1,@mybuff[pos],size);
pos := pos + size;
SetData(dat2,@mybuff[pos],size);
pos := pos + size;

としており、posが64前後でエラーが発生します。
エラーの回避法は無いでしょうか。そもそものやり方がまずいのでしょうか。
アドバイスお願いします。
【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
670 :デフォルトの名無しさん[sage]:2014/04/27(日) 20:47:29.16 ID:Q+0O3D4/
>>668
なるほど、わからん。

という冗談はともかく、アドバイスありがとうございます。

Indy を使っている以上、TIdBytes を使いたいのですが、TMemoryStreamとかの方が良いですかね?
【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
673 :デフォルトの名無しさん[sage]:2014/04/27(日) 21:06:01.34 ID:Q+0O3D4/
>>672
TIdBytesでやる場合は、Copy(src,pos,Length(src) - pos) とかを渡すのが常套になるのでしょうか?
Delphiは読めるのですが、本格的に作り始めたのは最近なので、Delphiでの定石がまだわかりません。
【Delphi】Embarcaderoオッチャ その29【C++ビルダ】
676 :デフォルトの名無しさん[sage]:2014/04/27(日) 21:25:43.33 ID:Q+0O3D4/
>>674
詳しいアドバイスありがとうございます。
参考にして手直ししてみます。


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