« 【講座】HSPよく使うフレーズ 第12回 ペイントソフトっぽいもの | メイン | HSPTV!メルマガ 第21号 »

2006年08月17日

【講座】HSP3ワンポイントテクニック 第10回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、配列変数について取り上げてみましょう。
HSP3からは、配列変数を「a(10)」のようにカッコを使って表現する
スタイルに変更されています。HSP2までの、「a.10」も使用する
ことができますが、カッコを使うことで配列要素部分に式を利用
できたりと便利になっています。
ちなみに、「a.10」のような表記は実行時に「a(10)」に変換されて
しまうため、どちらの書き方でもメモリ効率や速度は変わりありません。
もう1つ、HSP2から変わっている点として配列変数の自動確保が
挙げられます。
たとえば、a(15)を使いたい場合は、

dim a,16
a(15)=1

のように配列を確保してから使用するのが普通ですが、

a(15)=1

のように、いきなり配列を指定することも可能です。
これは、a(15)に代入を行なった時に、自動的にa(0)~a(15)を
使用できるように配列の自動確保が行なわれたからです。
ただし、代入ではなく「mes a(15)」のように確保されていない
要素を参照しようとした時にはエラーになります。
あくまでも、代入の時にしか自動確保されないことを覚えて
おいてください。
配列の自動確保は便利な機能ですが、

a(1000)=1

のように指定すると、a(0)~a(1000)までを一気に確保してしまう
ので、知らないうちにメモリを使い過ぎないように気をつけた方が
いいでしょう。
また、現在どこまで配列が確保されているかを調べることも
できるようになっています。
length関数は、指定した変数の配列がどれだけ確保されているかを
数値として返します。

a(15)=1
mes length(a)

これがあれば、すべての配列要素に同じ処理を繰り返して
行なうような場合にも使えます。

; 配列変数aの中身をすべて表示する
repeat length(a)
mes a(cnt)
loop

そして、これと同じことを行なう繰り返し命令がforeachです。

; 配列変数aの中身をすべて表示する
foreach a
mes a(cnt)
loop

どれも、使う機会の多い機能だと思いますので、知っておくと
便利ですよ。

(おにたま)

投稿者 usuaji : 2006年08月17日 00:00

口臭チェッカー市場