ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< 障害物に引っかかるオブジェクト | main |



バッファオーバーフロー対策

バッファに値を格納するとき、格納位置がバッファ長を超えるとエラーになります

以下はエラー時にバッファ長を再確保することで、途中終了せずに正常に処理させるプログラムです

 

pos ginfo_winx,ginfo_winy:mes"a"
charlen=ginfo(14)
sdim test,64        ;文字列型変数作成
onerror gosub *error    ;エラー時に実行するイベント
poke test,70,"a"    ;エラー発生
repeat 70            ;メモリブロックが再確保されたことを確認
    poke test,cnt,"a"
loop
pos 0,0:mes""+test
repeat 7,1
    lx=charlen*(cnt*10-1)
    pos lx,20:mes"^"
    pos lx,30:mes""+(cnt*10)
loop
stop
*error
    err_str="#Error "+wparam+" in line "+lparam+" (???)¥n"
    err_str+="-->バッファオーバーフローが発生しました"
    dialog""+err_str,1,"Error"
    memexpand test,varsize(test)*2    ;変数の長さを倍にする
    return

0
    posted by higashijugem 14:08comments(0)|-|


    この記事に対するコメント