[過去ログ] 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
910(1): 名前は開発中のものです。 [sage] 2006/05/27(土) 19:03:50 ID:cvS7Jxha(2/2) AAS
いま気付いた。マグロ漁船
マグロよりカニのほうが儲かるらしいよ( ̄ー ̄)ニヤリッ
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