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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0222
Tommy文字列の各文字を変数に割り当て2解決


Tommy

リンク

2008/2/22(Fri) 12:31:13|NO.13703

お世話になってます.
どなたかご助言お願いします.

noteload で,テキストファイルを読込み,スペース区切りの
整数や実数を各変数に割り当てようとしてます.
例えば テキストファイル内に
[  1 5 10.0 20.0 ]のラインが続くような場合で,
配列変数a,b,c,dを定義します.
a=1,b=5,c=10.0,d=20.0となるように,半角スペース区切りで
割り当てたいのですが,いい関数名があれば,ご助言ください.
最初は,getstrで実施できると思ってたのですが,スペースが
2個あると結果が違うし,2列目の値だけをとりださせなさそうです.

おかしな質問かもしれませんが,よろしくお願いします.



この記事に返信する


Megane

リンク

2008/2/22(Fri) 13:29:27|NO.13704

a.0=1 b.0=5 c.0=10.0 d.0=20.0
次の行はa.1,b.1,c.1,d.1…とされたいのだとひとまず解釈しますが、
getstrを使うのはそのままで、半角スペースの連続や
全角スペースが出たときだけ次をもう一度読み直せばいいのではないか、と考えます。


sdim bu , 1000 : notesel bu ;バッファ sdim l , 100 ;各行 sdim fs , 20 ;文字列状態の数値 noteload "txt.txt" : m = noteinfo(0) ;行数 dim a , m : dim b , m : dim c , m : dim d , m repeat m n = cnt noteget l , cnt ;各行を取得 ;dialog l i = 0 ;Index repeat 4 getstr fs , l , i , ' ' i += strsize if fs = "" : continue cnt ;半角スペースが続いた if fs = " " : continue cnt ;全角スペースがあった ;dialog "" + cnt + "\"" + fs + "\"" switch cnt case 0 a.n = int(fs) case 1 b.n = int(fs) case 2 c.n = double(fs) case 3 d.n = double(fs) swend loop loop font "" , 12 repeat m mes "A=" + a.cnt + " B=" + b.cnt + " C=" + c.cnt + " D=" + d.cnt loop

試しに使ってみたテキストの内容(□は全角スペース、*は半角スペースを示す)
□*1*5*10.0*20.0
***2*6*10.1*21.0
***3*7*10.2*22.0
□*4*8*10.3*23.0
□*0*9*10.4*24.0



Tommy

リンク

2008/2/23(Sat) 08:12:06|NO.13716

Meganeさん,ありがとうございました.
まだ,自分のものには,できてませんが,
解決できました. 



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