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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0121
おにぎり[初歩的?]変数にたくさんの数値を記憶4解決


おにぎり

リンク

2018/1/21(Sun) 22:29:58|NO.82309

ひとつの変数に複数の数を入れたいのですが、

aaa=10 hensu=0 dim hensu,aaa randomize repeat aaa hensu(cnt)=rnd(100) loop repeat aaa mes hensu(cnt) loop stop

と、repeatとcntを使ったものはわかります。

これを使わずに一つの変数(いれもの)にたくさんの数値を記憶させることは出来ないでしょうか。



この記事に返信する


あまら

リンク

2018/1/21(Sun) 23:18:02|NO.82311

配列変数の各要素1つずつに対して、1つの数値を入れる事が基本ですので、
repeatやforを使った方法が一般的によく使われる方法です。

それ以外だと下記のような方法もあります。
	dim nums, 10;
nums(0) = rnd(100), rnd(100), rnd(100), rnd(100), rnd(100); nums(5) = rnd(100), rnd(100), rnd(100), rnd(100), rnd(100);

今回は全てがrnd(100)なのでrepeatを使った方が楽ですが、
それぞれが異なる特定の数値を入れたいというときには使えるやり方です。
これは二行に分割していますが、一行で書くことも可能です。


あとは……やったことはないですが、
変数のメモリーにアクセスして一気に直接書き込むこともできそうですが、
そちらの方が面倒な気がします。



HIJIKIsw

リンク

2018/1/22(Mon) 06:54:38|NO.82312

ひとつの変数に複数の数を入れる、というのは、例えば
色を保持しておく変数などを、hogehogeR, hogehogeG, hogehogeB などとせず、
hogehogeColor という風にひとつの変数に纏める。
ということでしょうか?

僕が過去に自分用に作ったモジュール (厳密に言うとモジュールとは違いますが) で
そのようなことを実現しているので、何かの参考になれば幸いです。


//-------------------------------------------------------------------------------------------------- //= COLORREF Module type1 (RGB) //-------------------------------------------------------------------------------------------------- #define ctype RgbToRef(%1,%2,%3) (%1<<16)|(%2<<8)|%3 #define ColorRef(%1) color 0xff&(%1>>16), 0xff&(%1>>8), 0xff&%1 #define ctype RefToR(%1) (0xff&(%1>>16)) #define ctype RefToG(%1) (0xff&(%1>>8)) #define ctype RefToB(%1) (0xff&%1) //-------------------------------------------------------------------------------------------------- //= 以下サンプル //-------------------------------------------------------------------------------------------------- #if 0 bgcolor = RgbToRef(180, 196, 255) textcolor = RgbToRef(255, 64, 80) ColorRef bgcolor boxf ColorRef textcolor mes "bgcolor:"+bgcolor mes "RefToR(bgcolor):"+RefToR(bgcolor) mes "RefToG(bgcolor):"+RefToG(bgcolor) mes "RefToB(bgcolor):"+RefToB(bgcolor) mes "" mes "textcolor:"+textcolor mes "RefToR(textcolor):"+RefToR(textcolor) mes "RefToG(textcolor):"+RefToG(textcolor) mes "RefToB(textcolor):"+RefToB(textcolor) #endif

もし、私の認識が見当違いでしたらすみません。



HIJIKIsw

リンク

2018/1/22(Mon) 06:56:28|NO.82313

書き忘れました。念のため。
先ほどのコードのサンプル部分の動作を確認する場合は、
13 行目の #if 0 を #if 1 に書き換えて実行してください。



おにぎり

リンク

2018/1/22(Mon) 22:05:41|NO.82323

お答えいただきありがとうございます。
よくよく考えるとrepeat,cntで
できるような気がしてきました。

内容はこれから参考にしていきたいと思います。
ありがとうございました。



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