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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1023
strmid の読み込み方8未解決


リンク

2007/10/23(Tue) 00:45:09|NO.11900

初歩的な質問ですみません。

strmid 命令で文字を読み込んだ場合、読み込んだ文字はたとえ数字でも文字列扱いになってしまいます。
strmid 命令で読み込んだ文字を数列として扱うにはどうすれば良いのでしょうか?



この記事に返信する


ANTARES

リンク

2007/10/23(Tue) 01:09:27|NO.11901


s="abcd521efg" mes 0+strmid(s,4,3)+20000 mes int(strmid(s,4,3))+20000 stop



n

リンク

2007/10/23(Tue) 06:41:45|NO.11904

>数字でも文字列扱いになってしまいます。

笑ったw

HSPには"数字"というものは厳密には存在しません。
数字と呼ばれるのは一般的に
"文字定数"と呼ばれる『数値』か、
"数値文字列"と呼ばれる『文字列』の
どちらかに当てはまります。

そして当然のことながら、strmid関数はパラメータには『文字列』を指定しなければならないので、
結果も当然、文字列になります。



Shinya

リンク

2007/10/23(Tue) 09:12:10|NO.11908

>strmid 命令で読み込んだ文字を数列として扱うにはどうすれば良いのでしょうか?
数列の計算は、一つ一つの項に分解してやればいいです.
a="10+20+30-40"
sdim s, 1024 i=0 repeat c=cnt repeat g(c)=peek(a, i) if g(c)==0 { i=-1 : break } if g(c)<'0' or g(c)>'9' { i++ : break } s(c)+=strmid(a, i, 1) i++ loop if i<0 { break } loop i=int(s) repeat c if g(cnt)=='+' { i+=int(s(cnt+1)) : continue } if g(cnt)=='-' { i-=int(s(cnt+1)) : continue } loop mes a+"="+i



n

リンク

2007/10/25(Thu) 06:40:40|NO.11987

誰も「数式を計算したい」とは言っているようには見えませんが?
数列を数式と読み間違えましたか?
数列とは数字の並びのことだと思います。
数列という言葉に「計算」という概念は無いように思います。



Shinya

リンク

2007/10/25(Thu) 23:48:14|NO.12019

>誰も「数式を計算したい」とは言っているようには見えませんが?
そのようです.かえって分かりにくくしてしまい申し訳ありません.



タコス

リンク

2007/10/26(Fri) 00:16:15|NO.12020

strmidで文字列として読み込んだ数字を格納するaという変数として

a=int(a)

で数値文字列になるはず



n

リンク

2007/10/26(Fri) 06:57:28|NO.12021

>タコスさん
>strmidで文字列として読み込んだ数字を格納するaという変数として
>a=int(a)
>で数値文字列になるはず

なりません。



n

リンク

2007/10/26(Fri) 07:38:32|NO.12022

質問を読み返してみたけど、おかしいですね。

strmidは『文字』は読み込めない。
strmidは『文字列』を読み込んで指定した位置から指定した文字数分切り取った『文字列』を返す命令ですね。

『文字列』を返す命令に『文字列』じゃなくて『数値』を返して欲しい、っていう望みはかなえられないです。
返ってきた『文字列』を、あとで『数値』に変換すればいいのです。

データ型についてもう一度おさらい。

1 ... 数値
'1'...文字(定数)・数値
"1"...文字列
"123"...文字列・数列

#module ; IsNumStr() ; 指定した文字列が数列かどうかを調べる関数 ; 戻り値:1=数列/0=数字以外の余計な文字が含まれている #defcfunc IsNumStr str p1 return p1=int(p1) #global



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