|
|
2015/12/13(Sun) 04:22:26|NO.73587
VRAM同士を比較したいのですが、
ただ単にif VRAM_1!VRAM_2:と書いても正確に比較されません。
デバッグウィンドウから見てみると、どうやら最初の16バイトだけを比較している感じ。
Screen 1,100,100
mref VRAM_1,66
Screen 2,100,100
mref VRAM_2,66
boxf 80,80,100,100
if VRAM_1!VRAM_2:Dialog "違う"
lpeekを何度も使えば良いんでしょうけど速度を出したいので、
できれば一括でメモリ同士を比較できれば良いのですが・・・
なにか良い方法を知っている方はいますでしょうか?
|
|
2015/12/13(Sun) 04:30:43|NO.73588
スレ立てて10分も経たずに解決・・・ちゃんと知恵を絞りきってから立てないからこうなるんですね。
str型の変数にmemcpyでコピーしたらしっかり比較できました(´・ω・`)
Screen 1,100,100
mref VRAM_1,66
sdim strVRAM_1,100*100*3
Screen 2,100,100
mref VRAM_2,66
sdim strVRAM_2,100*100*3
boxf 80,80,100,100
memcpy strVRAM_1,VRAM_1,100*100*3
memcpy strVRAM_2,VRAM_2,100*100*3
if strVRAM_1!strVRAM_2:Dialog "違う"
|
|
2015/12/13(Sun) 05:50:05|NO.73589
ちがいます こうです
寝ぼけているので間違いがあればごめんなさい
//variableはvariable.0のことです
//それでは0までしか比較しません
//つまりstrcmpと同じです
#uselib "crtdll.dll"
#cfunc memcmp "memcmp" var,var,int
#define ctype WINDOW_XSIZE2BITMAP_SIZE(%1) (%1*3+(%1\4))
#const WINDOW_XSIZE 101
#const WINDOW_YSIZE 100
buffer 1,WINDOW_XSIZE, WINDOW_YSIZE
mref bin_bitmap1,66
//NULL終端ではどうなるか
//pset WINDOW_XSIZE-1, WINDOW_YSIZE/2
buffer 2,WINDOW_XSIZE, WINDOW_YSIZE
mref bin_bitmap2,66
//サイズ確認
pset WINDOW_XSIZE-1,0
//boxf 80,80,100,100
//NULL終端ではどうなるか
//pset WINDOW_XSIZE-1, WINDOW_YSIZE/2
//先頭から3バイト
//pset 0, WINDOW_YSIZE-1
if memcmp(bin_bitmap1 ,bin_bitmap2 , WINDOW_XSIZE2BITMAP_SIZE(WINDOW_XSIZE) * WINDOW_YSIZE): dialog "違うようです"
if memcmp(bin_bitmap1 ,bin_bitmap2 , WINDOW_XSIZE * WINDOW_YSIZE *3): dialog "ただたんに3倍するのではないことの確認"
if bin_bitmap1 != bin_bitmap2: dialog "先頭から4バイトを整数型として比較"
sdim str_bin_bitmap, WINDOW_XSIZE2BITMAP_SIZE(WINDOW_XSIZE) * WINDOW_YSIZE, 2
memcpy str_bin_bitmap.0, bin_bitmap1, WINDOW_XSIZE2BITMAP_SIZE(WINDOW_XSIZE) * WINDOW_YSIZE
memcpy str_bin_bitmap.1, bin_bitmap2, WINDOW_XSIZE2BITMAP_SIZE(WINDOW_XSIZE) * WINDOW_YSIZE
if str_bin_bitmap.0 != str_bin_bitmap.1: dialog "NULL終端文字列として比較"
| |
|
2015/12/13(Sun) 07:54:25|NO.73591
>>寝ぼけているので
こういう場合はダメと言いたいらしい
sdim A
poke A,0,$41
poke A,1,$00
poke A,2,$42
sdim B
poke B,0,$41
poke B,1,$00
poke B,2,$43
if A=B : mes "ONAJI"
stop
|
|
2015/12/13(Sun) 19:51:59|NO.73597
あああ・・・そんなバグが(´・ω・`)
Noapさん、KAさん、いつも有難うございます。
|
|