[過去ログ] Delphiゲームプログラミング相談室 (976レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
914(1): ぬ [sage] 2006/05/29(月) 08:43:50 ID:EScKESZS(1) AAS
 画面クリアって再描画するときクライアントカラーで塗りつぶすことを言ってるんでしょ 
 それやってるのって Paint じゃなくて WM_ERASEBKGND のメッセージメソッドじゃないの? 
 TCustomForm.Paint は Assigned(FOnPaint) をチェックしてるだけだし 
  
   TForm1 = class(TForm) 
   private 
     procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; 
   end; 
  
 procedure TForm1.WMEraseBkgnd(var Message: TWMEraseBkgnd); 
 begin 
   //なーんもしない 
   Message.Result := 1; 
 end; 
  
 あ、これだったら TForm.Brush.Style := bsClear; でも同じかな 
  
 >>910マグロよりカニのほうが儲かるらしいよ( ̄ー ̄)ニヤリッ 
915(1): 911 [sage] 2006/05/29(月) 09:52:15 ID:t6UaTX2i(1/3) AAS
 >procedure Paint;時に画面クリアしているので 
 俺は何を書いてるんだ。寝ぼけてんのか。 
 >914の言うとおりPaintはFOnPaintを呼び出してるだけだ。inheritedしても多少実行速度が速くなるだけでちらつきは止まらない。 
  
 >914 フォローサンクス。ところで名前欄に妙な文字が入ってるみたいだぞ。 
916: 名前は開発中のものです。 [sage] 2006/05/29(月) 09:55:51 ID:t6UaTX2i(2/3) AAS
 ×inheritedしても 
 ○inherited止めても 
 本気で寝ぼけてんな。 
917(1): 名前は開発中のものです。 [sage] 2006/05/29(月) 11:43:34 ID:NefmNljv(1) AAS
 >>915 
 マァの人だからでしょ 
918: 名前は開発中のものです。 [sage] 2006/05/29(月) 12:48:03 ID:t6UaTX2i(3/3) AAS
 「マァの人」で検索したらわかった。コテハンだったんだな。妙な文字なんつってスマン。 
 >917もわざわざスマンな。 
919(1): 名前は開発中のものです。 [] 2006/05/30(火) 12:53:26 ID:JUitY34u(1) AAS
 ポインタ操作ってどうやるの? 
  
 p,v: Pointer; 
  
 vにpからある一定の大きさだけ後ろのアドレスを指定したい 
  
 v := p; 
 Inc(PBYTE(v),ある一定の大きさ); 
  
 これをやるとpのアドレスまで変わってしまう? 
920: 名前は開発中のものです。 [sage] 2006/05/30(火) 13:26:58 ID:+X21N2Yf(1) AAS
 v = pointer(integer(p)+100); 
 スマートじゃないなあ・・・ 
921: 名前は開発中のものです。 [sage] 2006/05/30(火) 14:11:20 ID:ss191I5G(1) AAS
 >これをやるとpのアドレスまで変わってしまう? 
 変わらない。 
922(2): 名前は開発中のものです。 [] 2006/05/30(火) 14:21:37 ID:G3qDWiPC(1/2) AAS
 >>919ので間違いではない 
 v:=pやっても別にpのアドレスはかわらん 
  
 だが、Pascalでは、 
  
 v := @( PByteArray(p)[ n ] ); 
  
 ってな書き方をする方が多いと思う。 
 そういうわけで、Pointer型なんかよりは、PByteArrayを多用すると楽ちん 
923: 名前は開発中のものです。 [] 2006/05/30(火) 18:29:57 ID:2UT4+Oju(1) AAS
 俺もほとんど生ポインタ使わんな 
 >>922みたいに、バイト配列にキャストしてIndexでアクセスする 
924(1): 名前は開発中のものです。 [] 2006/05/30(火) 18:40:41 ID:Dsd2Lvyv(1) AAS
 >>922 
 PByteArrayなんてあったんだー 
 これは便利だ!! 
925: 名前は開発中のものです。 [] 2006/05/30(火) 20:38:51 ID:G3qDWiPC(2/2) AAS
 >>924 
 sysutilsにて定義されている 
  
 自分で定義するなら、 
  
 type 
 PByteArray=^TByteArray ; 
 TByteArray=array[0..1023] of byte ; 
  
 ってなとこ 
926: 名前は開発中のものです。 [sage] 2006/05/31(水) 02:31:11 ID:jPRHLqEG(1) AAS
 DirectXの頂点バッファってロックしてポインタで取得するでしょ 
 あれを取得するときに使えるワザだなと 
 PByteArrayで取得して40バイトずつずらしてユーザー定義の構造体に 
 キャストする 
927: 名前は開発中のものです。 [] 2006/05/31(水) 13:57:33 ID:Ka6gjiAS(1) AAS
 それだったら、最初からユーザー定義の構造体の配列とそのポインタ作った方がよくね? 
928(1): 名前は開発中のものです。 [sage] 2006/06/01(木) 20:19:20 ID:jyfWqyoY(1) AAS
 このスレ最近知って読んでるんだが。 
  
 スクリプトエンジン作ってる言う人が結構いたけど 
 Delphiでパーサージェネレーターってあるの? 
929: 名前は開発中のものです。 [sage] 2006/06/01(木) 21:03:05 ID:ulKxJS9r(1) AAS
 >>928 
 yacc/lex Delphi でぐぐる 
930: 名前は開発中のものです。 [] 2006/06/02(金) 01:05:48 ID:Dy3JqRf/(1) AAS
 俺は再帰下降構文解析でやってるが、デバッグしねる。 
 コンパイラコンパイラ使ったほうがいいよ・・・ 
931(1): 名前は開発中のものです。 [sage] 2006/06/02(金) 01:49:38 ID:CLlntjIq(1/3) AAS
 v := @( PByteArray(p)[ n ] );  
 だと要素のアドレスだから嫌い。 
  
 V := Pointer(Integer(P) + 40); 
  
 だな。 
932: 名前は開発中のものです。 [] 2006/06/02(金) 02:12:19 ID:aIT54UI1(1/2) AAS
 >>931 
 おれはポインタを整数型にする方が気持ち悪いが、 
 まあ、人それぞれだろ。 
933(1): 名前は開発中のものです。 [sage] 2006/06/02(金) 03:30:28 ID:40xc9cjN(1/3) AAS
 マイナスにならないならIntegerよりByteかWordを使うべきだよね 
 forのループカウンタとかも、Integerにすべきじゃないよね 
934: 名前は開発中のものです。 [] 2006/06/02(金) 04:14:32 ID:aIT54UI1(2/2) AAS
 >>933 
 そんな餌に釣られるクマー(AA略 
935: 名前は開発中のものです。 [sage] 2006/06/02(金) 04:17:20 ID:CLlntjIq(2/3) AAS
 そう言えば、Integer型とポインタ型に互換性が無くなると問題になりますね。 
 でもコンパイラエラーが出るのかな。 
936: 名前は開発中のものです。 [sage] 2006/06/02(金) 04:28:53 ID:CLlntjIq(3/3) AAS
 いや待てよ、MaxInt + 40 でオーバーフローが出るのか。 
 データは2G以下のアドレスにあるから偶々出ていないだけで 
 問題のあるコードかもしれない。 LongWordでキャストするべきなのかな。
937(2): 名前は開発中のものです。 [sage] 2006/06/02(金) 19:57:20 ID:40xc9cjN(2/3) AAS
 Integerがオーバーフローするとマイナス値になって、しかもエラーを 
 吐かない、難しいバグになるでしょ 
 なんでもかんでもIntegerを使うのは危険かもしれない 
938: 名前は開発中のものです。 [] 2006/06/02(金) 20:08:38 ID:Qv1KmChy(1) AAS
 >>937 
 だからByteかWord使えってのかwww? 
上下前次1-新書関写板覧索設栞歴
あと 38 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s