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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0423
kk文字列型から整数型への変換3解決


kk

リンク

2015/4/23(Thu) 22:22:40|NO.68720

最近「HSP入門編」などを勉強し終わった初心者です。
少し疑問になったことがありましたので、質問させてください。

文字列型の変数に値が入った状態(「1」など)で、
そのまま整数型の変数に変換できる方法はありますでしょうか?

テキストファイルなどから文字列を読み取り、それを計算する際こう書いてみました。
※「test.txt」という、中身が「1,2」(3バイト)のファイルがカレントにあるとします。

notesel a
noteload "test.txt"
split a,",",x,y
mes x+y

これで実行すると画面に「12」と表示されますよね?そこで
4行目「mes x+y」を「mes int(x)+int(y)」と変更することで「3」と表示されました。

でもこれはあくまでx,yという文字列型変数から取り出した値を整数に変えたのであって、
依然、x,yの値は文字列の「1」「2」だと思います。(デバッグウインドウで確認)
ここの認識は間違ってないでしょうか?

今後これらの変数から整数値を取り出したい時は、その都度int()をつけるものなのでしょうか?
はじめから数値として使うと決めているのであれば、文字列として読み込んですぐに整数型に変換
した方が後々楽ではないだろうか・・・、と考えた次第です。

ちなみに今の私の知識で考えた方法が下記になります。

notesel a
noteload "test.txt"
split a,",",x,y
xx = int(x) : yy = int(y)
mes xx+yy

変数の数が余計に増えてしまいました(^^;)
何か良い方法ありましたら、ご教授ください。



この記事に返信する


ht_ask

リンク

2015/4/23(Thu) 22:41:29|NO.68721

認識は正しいです。また、HSPは式を評価するときに左辺の型に暗黙的に型変換されます。

x = "1" y = "2" mes x + y ; 12 mes 0 + x + y ; 3 x = 0 + x ; よってこのように型変換可 y = int(y) ; もちろんこちらでもよい mes x + y



暇人

リンク

2015/4/23(Thu) 23:51:09|NO.68722

大抵は整数型配列変数に入れる

a="1,2,3,4,5" split a,",",b c=stat dim d,c repeat c d(cnt)=int(b(cnt)) loop e=1 repeat c mes b(cnt) +"+"+ b(e\c)+"="+str(d(cnt) + d(e\c)) e++ loop



kk

リンク

2015/4/24(Fri) 00:55:17|NO.68724

>ht_askさん
>認識は正しいです。また、HSPは式を評価するときに左辺の型に暗黙的に型変換されます。

ご回答ありがとうございます。
その後いろいろ参照していましたが、ご指摘のような事が書いてあるのを見て、
「これでなんとかなるかも・・・」と考えていましたが、お答えを拝見してすっきりしました。

notesel a
noteload "test.txt"
split a,",",x,y
x = 0 + x : y = 0 + y
mes x+y

私の「xx = int(x) : yy = int(y)」よりもとてもシンプルですね。
ありがとうございました!


>暇人さん
>大抵は整数型配列変数に入れる

なるほど。配列変数やシステム変数と繰り返し命令を活用すれば、簡単に変換できるのですね。
大量の変数を扱う時はこのようにした方がよいのですね。

notesel a
noteload "test.txt"
split a,",",b
c=stat

dim d,c

repeat c
d(cnt)=int(b(cnt))
loop

mes d(0)+d(1)

ありがとうございます。大変参考になりました!



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