HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0722
かっぺいdim、sdim、2解決


かっぺい

リンク

2008/7/22(Tue) 16:04:08|NO.17528

どうもかっぺいです。
最近HSPを練習してdim命令とsdim命令
それとpeek命令の使い方を覚えたのですけど
それを実際に使うと何がいいのかがわかりません。
教えてください。



この記事に返信する


SYAM

リンク

2008/7/22(Tue) 16:59:35|NO.17531

■ dim , sdim について
その命令によって作られる『配列』というものがなんの役に立つのか…という話でしょうか。


変数というのは、数値や文字列を入れておく入れ物であることはすでに御存知と思います。
変数名は、その入れ物につける名前というのも理解していますね。

通常の変数は、数値や文字列を1つだけ入れておくことのできる『箱』のような入れ物ですが、
配列変数は、それがいくつも繋がった『棚』のような入れ物です。

その『棚』は、たとえば横一列に繋がっていたり、それが何段もあったりします。そして、
「**という棚の、上から*番め、左から*番目」
…というやり方で中身を出し入れできます。


たとえば、
「箱0」〜「箱99」
に、別々の中身が入っているとします。これを、変数 HAKO_00, HAKO_01, HAKO_02,…, HAKO_99 で表します。
そこで、変数 N に 0 〜 99 のうちどれか一つの数値が入っているとき、

「変数 N に入ってる数字の番号のついた箱の中身を取り出したい」

…となると、どんなスクリプトを書けば取り出せるでしょうか。ちょっと考えてみてください。
面倒だと思ったら実際に書いてみなくても結構です。それは多分、無駄な努力ですから。


つぎに、
100列の『棚』を 配列 TANA で表します。この場合、書くとしたら
dim TANA, 100

ですね。 これで、TANAという名前の100列の棚が作られます。この棚に、左から順に HAKO_00, HAKO_01, …と同じものが入っているとすると、先ほどと同じ要求を実現するには、
TANA(N)
または、
TANA.N

とだけ書けばOKです。たとえば変数 OUT にするなら
OUT = TANA.N
…のようになります。

棚が例えば100列100段もあったりしたら、配列でもなければやってられないことは想像できるでしょう。

dim, sdim 命令は、その「棚」をあらかじめ作っておく命令です。
棚もまだ用意してないのに「上から*段め、左から*番目にデータを書き込め」…とか命令することはできませんからね。


■peek 命令について

すべての変数はコンピュータのメモリに記憶されています。
なかでも、配列や、bload命令で読み込んだデータや、その他色々な場合に「メモリのどこかに、固まって書き込まれる」データができることがあります。
peek命令は、そのようなデータの一部分を取り出すものです。

ですから、このあたりはHSPの命令についてだけではなく、メモリについての知識がちょっとだけ要ります。
配列などがメモリの中でどのように表現されているか、などを理解していなければ使うことは出来ません。
不用意に使えば、変数として使用を許可されてもいない、アクセスしてはならない領域にアクセスしてしまうこともあります。
そうなればHSPがストップをかけることもできず、Windowsがエラーを発生します。

まずは配列を使いこなしてください。



かっぺい

リンク

2008/7/23(Wed) 12:39:50|NO.17558

ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.