HyperCard tribute

データ接合について


 HyperCardの大きな特徴の一つがこのデータ接合です。多くのプログラミング言語では、テキストの接合はできても英数字データの接合はできませんが、HyperCardではごく簡単な命令を用いて英数字データの接合をすることができます。
 HyperCardでは半角英数字を文字としても扱うことができます。この際、あらたな宣言などは必要なく、そのまま文字として使用することができます。その後、また英数字として計算に用いることも可能です。
 1 
 2 
 3 
 4 
put 1 into x1
put 5 into x2
put x1&x2 into y
put y+1

 まず、1・2行目で変数x1、x2に数値を代入します。この時代入する値は、英数字として代入してあります。
 次に3行目で、変数x1、x2の値を接合してあります。この結果、変数yには15が代入されます。
 最後の4行目で、変数yに1を足します。結果は16になります。

 このスクリプトでは、英数字データとして代入されたデータ同士を、テキストとして接合させ、その後、数値として計算させています。すなわち、C言語でいうところのデータ型変更を自動に行い、しかも、テキスト型に変更したテキストで計算をすることさえもできるということなのです。


 残念なことに、HyperCardには配列がありませんが、このデータ接合とフィールドを用いることで、疑似配列を作ることが可能となります。

 まず、配列の数だけフィールドを用意し名前を配列名にします。ここでは、m1、m2、m3とします。データはフィールド内に書き込んで下さい。

1 put "m"&1 into name
2 put cd fld name

 1行目で配列名を作成します。配列名の共通部分である m と、配列番号をデータ接合し、変数 name に代入します。
 2行目で、フィールド m1 の値を取り出します。
 1行目の配列番号部分は、変数を用いることもできますので、repeat文などの中に組み込んで応用的に使うことが可能です。


 repeatを用いて、カード上にある10個のボタン全てを hide するスクリプトを作ってみます。10個のボタンを作り、名前をb1、b2、b3・・・・b10として下さい。
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
on mouseUp
  lock screen
  repeat with i=1 to 10
    put "b"&i into name
    hide cd btn name
  end repeat
  unlock screen
end mouseUp

 4行目でデータ接合をしてボタン名を作り出し、5行目でそれを hide するというのを10回繰り返し全てのボタンを hide します。

 このデータ接合というのは、HyperCardの最も特徴的な物の一つと言えます。柔軟なHyperCardを使いこなすためにも、是非このデータ接合を覚えて下さい。