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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0810
ぺーぺーnotegetが…3解決


ぺーぺー

リンク

2016/8/10(Wed) 23:57:37|NO.76595

notegetを2つ連続で使用したところ2つ目が違う型の変数に代入されたというエラーが表示されました。
調べてみるとint型になっていたのでstrで変更したのですが適応されていませんでした。
配列変数にしているのが原因かとも思いましたが1つ目も配列変数なので関係なさそうです。
high = "" ;notesel用
notesel high noteload "high.txt" repeat 5 noteget namer(cnt), cnt*2 noteget pointr(cnt), 1+(cnt*2) pointr = int(pointr) mes namer(cnt) mes pointr(cnt) loop stop
>>high.txt

a 1 s 2 f 3 g 4 h 5



この記事に返信する


MillkeyStars

リンク

2016/8/11(Thu) 00:09:07|NO.76596

ループを展開してみるとわかりやすいと思うけど、ループ内でstr が int に変わってしまっている為に型のエラーが発生しています。


//repeat cnt 0 noteget namer(cnt), cnt*2 noteget pointr(cnt), 1+(cnt*2) pointr = int(pointr) //この時点で pointr変数の型が int に切り替わってる。 mes namer(cnt) mes pointr(cnt) //repeat cnt 1 noteget namer(cnt), cnt*2 noteget pointr(cnt), 1+(cnt*2) //ここで型が違うエラー。 pointr = int(pointr) //この時点で pointr変数の型が int に切り替わってる。 mes namer(cnt) mes pointr(cnt)



ぺーぺー

リンク

2016/8/11(Thu) 00:14:22|NO.76597

>>MillkeyStars
なるほどです。おかげさまで解決しました。変数全体を指定していることに気づいていませんでした。
ありがとうございました。



葡萄色

リンク

2016/8/11(Thu) 00:17:21|NO.76598

8行目でpointrをint関数でint型にしてしまっているのが原因です。
noteget命令の第1パラメータに指定する変数は、str型でない場合は強制的にstr型に変換されるとドキュメントライブラリに説明されていますが、
指定された変数が配列変数で、なおかつ1番以降の要素の場合は型変換ができないようです。

これは単に変数へ値を代入する場合も同じことが言え、たとえばint型の配列変数の1番要素にstr型の値を代入したときに同じようなエラーが起こります。



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