忍者ブログ

GAM-22のメモ

[HSP3メモ]知識

2024.04 ← 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 →

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

エラーの行が違う

HSPがエラー時に返す行番号が、実際と異なる場合があります。
HSP3.0とHSP3.1との発生条件は違うので、最新版の3.1のエラーの発生条件を載せます。(他にもあるかも)
因みに、以前掲示板に載っていた気がします。
  • 文字列を{""}で複数行で指定した時
    v1 = {"
    あいうえお
    かきくけこ
    "}
    mes 1/0; エラー
    
  • コメント/**/内で、#から始まる行がある時
    /*
    #あいうえお
    #かきくけこ
    */
    mes 1/0; エラー
    
  • 式が長い時
    v1 = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63
    mes 1/0; エラー
    
  • マクロで%cを使用した時
    #define macro %c mes 1/0
    macro; エラー
    
発生条件は、よく解りません。
対処方法としては、返す行番号に近い位置にエラーあったりしますので、近くを探したり、行番号をあまり参考にしないで、自力で推理するなどがあります。

根本的な解決方法は無いようなので、悲しいです。
エラーの行番号が返るのが、インタプリタ言語のHSPの魅力なんですがね・・・

また、HSP ver3.1 RC1から改善されていて、私の方では起こらなくなりましたが、ソースによっては相変わらず起こるようです。
PR

デバック

logmes や title を使うと便利。

ソースが消えた

HSPでは、コンパイルする度、"hsptmp"というファイルを作ります。

名前通り、作業中のテンポラリファイルです。
予期せぬ事態で、ソースが消えた場合、こっから復活可能です。

ベンチマーク

HSPで、プログラムを使っていて、同じ動作をするAとBどっちが高速かなと調べるときに、よく使うソースです。
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"

;本題
	v1=timeGetTime()
	repeat 10000
	; 測りたい処理
	loop
;報告
	dialog ""+(timeGetTime()-v1)+"ms"
	end
timeGetTimeは、GetTickCountでも代用できそうだけど、timeGetTimeの方が密度が高いらしい。

マイナス

mes 1878237564 + 1878237564
とすると、なぜかマイナス(-538492168)になる。
別に、1878237564に限らなく、9999999999999とか大きい数ならマイナスになる。
このトラブルは、
mes 1878237564 - 1878237564; 結果 0
mes 1878237564 / 1878237564; 結果 1
mes 1878237564 * 1878237564; 結果 2135241744 正解 3527776346820654096
mes 1878237564 \ 1878237564; 結果 0
で、足し算のみに起きます。
戦車vs●の衝突判定のバグの原因は、これだった。
掛け算でマイナスになったら虚数みたいなのに。
HSPでは、整数は、-2147483648~2147483647しか扱えないからですかね?
カテゴリー
カウンター
最新記事
最新コメント
Twitter
人気記事
Amazon お買い得情報
Amazon お買い得情報
プロフィール
自画像
HN :
GAM-22
性別:
男性
職業:
大学1年生
HSP暦:
6年
好きなもの :
ゲーム, アニメ, マヨネーズ
嫌いなもの :
運動, 注射, ホラー映画, 英語
好きなバンド :
Muse, Radiohead
その他 :
文章能力が欠如している
バナー
Copyright © GAM-22のメモ All Rights Reserved
Powered by ニンジャブログ Designed by ピンキー・ローン・ピッグ 忍者ブログ / [PR]