〜 スクリプト 〜
デバッグ時とEXE時とで異なる処理を行う

「他人に配布するEXE化したものには不必要なデバッグ時にだけ必要なコード」や、
逆の「デバッグ時にはいらないがEXE時に喚起の意味で表示させるダイアログ」等、
デバッグ時またはEXE時にだけ処理させる場合、
デバッグ時にコードを書いて、コンパイル前にデバッグコードを削除する、
その修正を行う時には再度デバッグ用コードを書いて、コンパイル前に削除するといった
面倒かつ配布時にうっかり消し忘れてて利用者から問い合わせが来てしまうことのないよう、
_debhgシンボルの存在有無による切り分けを行うと楽です。
_debhgシンボルというのは、拡張マクロを使用するときにだけ使えるもので、
スクリプトから実行する時は定義された状態、EXE実行した時には定義されない状態で開始されますので、
コレとコンパイルのON・OFFを制御する#ifdef命令、#ifndef命令、#else命令、#endif命令を利用すれば
デバッグ時またはEXE時にだけ処理させることが可能となります。
下記サンプルは、ウィンドウID2をメインとして表示させるため、
デフォルトのウィンドウID0は起動時から表示させたくない場合のスクリプトです。
gsel命令で非表示モードにしても起動直後一瞬だけ表示されてしまうし、
#packopt命令だとEXE時は初めから完全に見えないけどデバッグ時には効果がない。
両方を併用するとデバッグ時もEXE時もどちらも表示されなくなるけど、
EXEファイルサイズが膨らんでしまう(コレだけだと8バイトしか増えないけど)。
他にもデバッグ時にだけ使用している変数やメッセージ等が大量にある場合は、
このコンパイルON・OFF方法を行うとファイルサイズは縮められるし、
不要なコードがEXEに含まれないので、この件に関しては利用者から文句言われずに済みます。
	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#packopt hide 1 // ID0は表示させない(但し、デバッグ時は効果なし)
#ifdef _debug
	gsel 0, -1    // 一瞬見えてしまうが表示させ続けるよりはマシか?
#endif

	bgscr 2, 320, 240, , 50, 50
	objsize 300, 220
	pos 10, 10 : button "終了", *exit
	stop

*exit
	end