2006/08/xxXREA.COMのs206サーバー内のサイトは、Yahoo!検索からペナルティを受け、検索結果で常に下位にランク付けされてしまうので、Yahoo!経由向けに用意したHSPミニ講座内のページです。このページは「http://lhsp.s206.xrea.com/hsp_function.html」の昔のものです。導入された「関数」(かんすう)。命令形式に慣れた人は、とまどうかもしれません。これはとても便利なものです。スクリプト記述の基本」→「関数」で、簡易的な説明は用意されてますが、ここでは実際のサンプルソースをいくつかあげてみることにします。下の表は、HSP2で「命令」だったものがHSP3で「関数」形式に変更された主なものです。新規導入関数も含まれてます。太字リンクはこのページで違いを触れているものです。日付や時間を取得するHSP2の命令に「gettime」というものがあります。"今日は、"+a+"月"+b+"日です。"stop上のコードをそのままHSP3のスクリプトエディタに貼り付けてコンパイルしてもエラーがでます。エラー番号18「代入できない変数名を指定しています」です。そこで、HSP3用に書き換えると、下のようになります。月なり日なりの取得タイプというのが、カッコで括られて指定できていますが、その取得した数値を入れておくための変数というのがなくなってしまいました。関数そのものが結果を返してくれます。"今日は、"+a+"月"+b+"日です。"stopさて、上のソースを見る限り、別に便利になっていないような気がするかもしれません。ところが、このソースは少々無駄な処理をしています。同じ結果を得るのに、もーっと簡略した書き方が下になります。命令の中に引数の一部として関数が利用できるようになった結果、変数aだの変数bだの用意しなくてもよくなったわけです。"今日は、"+gettime(1)+"月"+gettime(3)+"日です。getpath関数ファイルのパスの一部分を取得するHSP2の命令に「getpath」があります。"+directry+""stop次はHSP3の場合です。結果を格納する変数というのがなくなり、関数そのものが結果を返します。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。"+directry+""stop結果を返す変数を用意せず、そのままmes命令に渡すと本当にシンプルです。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。乱数を発生させるrnd命令は、HSP3から関数になりました。ボタンを押すことで0〜9の乱数を発生させ、それを100倍にした結果(0、100、200、・・・900)を表示するサンプルソースです。100;結果を表示します。""+bstopHSP3の場合です。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。;randomize命令はHSP2と変わらず。*ransustop*ransu;関数自体が結果を返します。rnd(10);100倍に。""+bstop値を代入するために用意していた変数aは不要になります。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。""+bstopまた、関数ネタではありませんが、HSP3では計算式自体も1つの変数になりえます。すると、100倍にした数値を入れておくための変数bも不要に。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。*ransustop*ransu;乱数発生、100倍、そして表示、が一気に行えます。ginfo関数マウスやウィンドウの特殊な情報を取得するHSP2の命令に「ginfo」というものがあります。ここではマウスのカーソル座標をタイトルバー上にリアルタイムで表示します。"+prmy+""loop次はHSP3の場合です。ginfoの第1パラメータ「取得する情報のタイプ」は、HSP2のものとは変更されています。関数自体が結果を返してくれるので、座標の値が返るシステム変数prmx、prmyというのはもう存在しません。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。文字列の長さを取得するstrlenと、文字列の取り出しを行うstrmid。どちらもHSP2では命令形式だったものです。ここでは文字列の右から3番目の文字を取り出してみるHSP3のサンプルソースです。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。["+moji+"]"上のコードを究極的に削ると、以下のようになります。エディタの[HSP]メニュー→[HSP拡張マクロを使用する]を要有効。