HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1213
スペースVRAM同士の比較4解決


スペース

リンク

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 "違う"



Noap

リンク

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終端文字列として比較"



KA

リンク

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さん、いつも有難うございます。



ONION software Copyright 1997-2023(c) All rights reserved.