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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0310
ALAMO変数自体の増加に対応する方法4解決


ALAMO

リンク

2013/3/10(Sun) 13:27:49|NO.52851

下のように、Splitで、テキスト文を分割して最大999個の変数に値を格納できる受け皿を用意します。

Split "," ,A1 ,A2, A3, A4 ............. ,A999

A1からA999の値を順番に、値があれば、変数 Ataidesu に代入して、*KakidasiというAtaidesuの値をmesではき出すスクリプトで、ひとつひとつの値を表示させるのを最終目的とします。





今の自分の能力では、下のように999個ひとつひとつに文を用意しなければなりません。

if A1 : Ataidesu = A1 : gosub *Kakidasi
if A2 : Ataidesu = A2 : gosub *Kakidasi
if A3 : Ataidesu = A3 : gosub *Kakidasi
.
.
.
if A999 : Ataidesu = A999 : gosub *Kakidasi


これをスマートに解決でそうな、for文という便利な物があるということを知りました。
しかしながら、変数の増加に対応する書き方がわかりません。

//問題の処理部分
For i=1, i > 998, ((((((ここにどう書けば、A1からA999を順番にAtaidesuに代入できますか?))))) :gosub *Kakidasi : i++

//書き出し
*Kakidasi
mes ""+Ataidesu+""
return



この記事に返信する


KA

リンク

2013/3/10(Sun) 13:59:19|NO.52854

配列変数を使うと簡単です。



暇人

リンク

2013/3/10(Sun) 15:23:30|NO.52859

splitのヘルプに

>指定された変数の数よりも、分割された要素が多い場合は、指定された変数の配列に代入されていきます。

>例 :

buf="12,34,56,78"
split buf, ",", results
repeat stat
mes "配列("+cnt+")="+results(cnt)
loop

>実行後に、システム変数statに分割できた数が代入されます。



fortunehill

リンク

2013/3/10(Sun) 15:37:26|NO.52861

/*ご参考*/

sdim ss repeat 1000 :ss += ""+rnd(100)+"," :await :loop mes ss :mes split ss,",",A ;文字列→数値 mes length(A) :mes repeat 1000 :if (A(cnt) == 1) {mes cnt} :await :loop



ALAMO

リンク

2013/3/12(Tue) 20:49:25|NO.52905

KAさん
暇人さん
fortunehillさん

大変勉強になりました。
有難うございます。

実を言うと、既に組まれているスクリプトでは変数連番の後にA999_100YENのように、文字を絡ませてしまっているので、1からの出直しになりそうです。
これを良い機会に、次は配列変数でデータを管理することします。

重ねてお礼申し上げます。



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