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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0922
kounoteadd notesave について6解決


kou

リンク

2006/9/22(Fri) 18:26:42|NO.2550

乱数から取得した3行の数字をsave.txtに出力したいのですがどうすればよいでしょうか?
以下のスクリプトに対してアドバイスをお願いします。


sdim a,1000 notesel a randomize x=rnd(100) y=rnd(100) z=rnd(100) mes x mes y mes z button "save",*save stop *save noteadd "x",0,1 noteadd "y",1,1 noteadd "z",2,1 notesave "save.txt" stop

現在は
x
y
z
と出力されます。

55
63
92
のようにsave.txtに出力したいです。

noteadd "x",0,1 
の"x"が数字でなく文字列を指している事が問題ではと予想してますが、
noteadd x,0,1 
のように書くと「パラメータの型が違う」と出ます。文法がおかしいという事ですよね?
noteadd "int(x)",0,1 
に変えてもint(x)という文字が出力され数字が出力されません。
よろしくお願いします。



この記事に返信する


osakana

リンク

2006/9/22(Fri) 19:17:32|NO.2552

>x"が数字でなく文字列を指している事が問題ではと予想してますが
>noteadd x,0,1 のように書くと「パラメータの型が違う」と出ます
おしいです。
noteadd には文字列を指定しなければいけないので、
こうします。

*save noteadd ""+x,0,1 noteadd ""+y,1,1 noteadd ""+z,2,1 notesave "save.txt" stop
HSPでは左側の型に合わされるという特徴があるので、
""+x として、xを文字列として渡しています。



osakana

リンク

2006/9/22(Fri) 19:20:46|NO.2553

分かり難いので修正・・・

>""+x として、xを文字列として渡しています。
xの中身を文字列として渡しています。



うひょ

リンク

2006/9/22(Fri) 19:21:45|NO.2554

*saveの下3行をこうかえると動きました。

noteadd str(x),0,1 noteadd str(y),1,1 noteadd str(z),2,1
noteaddのp1は文字列で、x,y,zは数値のため、
str()関数で文字列型に変えればOKです。



うひょ

リンク

2006/9/22(Fri) 19:23:10|NO.2555

osakanaさんとダブってしまいました…すみません。



osakana

リンク

2006/9/22(Fri) 19:45:47|NO.2556

>osakanaさんとダブってしまいました
不足の補間のためにも、
情報は多い方がいいので、どんどんたのみます。



kou

リンク

2006/9/22(Fri) 20:13:12|NO.2558

noteadd x,0,1 
は文字列を渡さなければならない場所に数値を渡していたのが失敗の原因だったのですね。

noteadd "x",0,1
の場合はxの中身を渡す事に失敗していた、と。

数値をうまく文字列で表記する、ということが今回のポイントだったということでよろしいでしょうか?

わかりやすい説明と2つの解法を提示していただいたお二人に感謝します。
本当にありがとうございました。



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