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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0324
Tommygetstrの読込みバイト数8未解決


Tommy

リンク

2008/3/24(Mon) 23:16:53|NO.14557

いきづまってしまい質問させてください.
下記のようなテキストファイルをnoteloadで
読込みたいのですが,うまく変数に格納できません.
アドバイスいただきたくお願いしまっす.m(__)m

<読込みファイル形式>
1000
1 4.739460599914135E-005 73.3138593911322
2 2.81572526032383 73.3569657416141
3 5.68949072974689 73.6037516224120
4 8.78130989927947 74.7687421617313
↓  ↓        ↓
  (1001行まで続く)


<プログラム例>
dim No, 1000
ddim XX, 1000
ddim YY, 1000

repeat int1000
n = cnt
noteget l , (n+1) ;2行目から各行を取得
i = 1
repeat 3
getstr fs , l , i ,''
i += strsize
if fs = " " : continue cnt
if fs = " " : continue cnt
switch cnt
case 0
No.n = int(fs)
case 1
XX.n = str(fs)
case 2
YY.n = str(fs)
swend
loop
loop



この記事に返信する


begriff

リンク

2008/3/24(Mon) 23:41:23|NO.14558

えと、まず結果がどうなってほしいのかわかんないので理想となる結果を提示していただきたい。
こっちがスプリクトを加工せずとも実行できるようにしていただきたい。

l={"1000 1 4.739460599914135E-005 73.3138593911322 2 2.81572526032383 73.3569657416141 3 5.68949072974689 73.6037516224120 4 8.78130989927947 74.7687421617313 "} dim No, 1000 ddim XX, 1000 ddim YY, 1000 repeat 999 ... ... .. .
スプリクトは<pre>〜</pre>間で囲ったほうが見やすいデスゾ^^



ANTARES

リンク

2008/3/25(Tue) 00:04:41|NO.14562

>アドバイスいただきたくお願いしまっす.m(__)m
 まともに答える気がしないので揚げ足を取っておきます。
・noteloadがない
・noteselがない

ちょっとだけアドバイス。
dialog "fs="+fs,2: if stat==7: end



Tommy

リンク

2008/3/25(Tue) 00:29:37|NO.14563

どもbegriffさん返信ありがとうございました.
再度テストできるようスクリプトとテキストファイル作成してみました.
理想とする内容は,テキスト内の数値を,そのまま出力したいのです.
テキスト内の数値にて,1列目をNoNodeに,2列目をXXに,3列目をYYに
格納したいのですが,XXとYYが全て空白になってしまいます.
getstrのiを変更すると数値がでるときがあるのですが,行全て読込まれて
しまいます.なにかいい手があればと・・・.お願いいたします.(>_<)


<読込みテキストファイル 001.txt>
1737
1 4.739460599914135E-005 73.3138593911322
2 2.81572526032383 73.3569657416141
3 5.68949072974689 73.6037516224120
4 8.78130989927947 74.7687421617313
5 11.1913944231840 75.6004876536882
6 13.2691737788028 76.3836799974114
7 15.1629804023969 76.7259695936313
8 17.0861272558055 76.7779476642557
9 -4.434351900570531E-005 73.3138593274474
10 18.3999267831224 76.8772291185430

<プログラム例>
<pre> cls      </pre>
<pre> width 500,500 </pre>
<pre> notesel s_out </pre>
<pre> notesel s_in </pre>
<pre> sdim bu ,10000 </pre>
<pre> notesel bu </pre>
<pre> noteload "001.txt" </pre>
<pre>      </pre>
<pre> sdim l , 1000 </pre>
<pre> sdim fs ,2000 </pre>
<pre> sdim Nmax, 1 </pre>
<pre>      </pre>
<pre> noteget Nlmax , 0 </pre>
<pre> mes "Nlmax=" + Nlmax </pre>
<pre> repeat 100 </pre>
<pre> getstr Nmax,Nlmax,i,' ' </pre>
<pre> i += strsize </pre>
<pre> if fs = " " : continue cnt </pre>
<pre> if fs = " " : continue cnt </pre>
<pre> if int(Nmax) >0 : break           </pre>
<pre> if Nmax = " " : continue      </pre>
<pre> loop                </pre>
<pre>                </pre>
<pre>                </pre>
<pre> sdim NoNode, int(Nmax)      </pre>
<pre> sdim XX, int(Nmax)           </pre>
<pre> sdim YY, int(Nmax)           </pre>
<pre>                </pre>
<pre> repeat int(Nmax) </pre>
<pre> n = cnt      </pre>
<pre> noteget l , (n+1) </pre>
<pre> i = 1 </pre>
<pre> repeat 3 </pre>
<pre> getstr fs , l , i ,'' </pre>
<pre> i += strsize </pre>
<pre> if fs = " " : continue cnt </pre>
<pre> if fs = " " : continue cnt </pre>
<pre> switch cnt </pre>
<pre> case 0 </pre>
<pre> NoNode.n = int(fs) </pre>
<pre> case 1 </pre>
<pre> XX.n = str(fs) </pre>
<pre> case 2 </pre>
<pre> YY.n = str(fs) </pre>
<pre> swend </pre>
<pre> loop </pre>
<pre>  loop </pre>
<pre> </pre>
<pre> </pre>
<pre>  repeat int(Nmax) </pre>
<pre>  n = cnt + 1 </pre>
<pre> mes "NoNode=" + str(NoNode.cnt) +" XX= "+ str(XX.cnt) +" YY= "+ str(YY.cnt) </pre>
<pre> loop </pre>
<pre> </pre>
<pre> STOP </pre>



As

リンク

2008/3/25(Tue) 00:46:19|NO.14564


cls width 500,500 notesel s_out notesel s_in sdim bu ,10000 notesel bu //<読込みテキストファイル 001.txt> noteload 代用 bu={" 1737 1 4.739460599914135E-005 73.3138593911322 2 2.81572526032383 73.3569657416141 3 5.68949072974689 73.6037516224120 4 8.78130989927947 74.7687421617313 5 11.1913944231840 75.6004876536882 6 13.2691737788028 76.3836799974114 7 15.1629804023969 76.7259695936313 8 17.0861272558055 76.7779476642557 9 -4.434351900570531E-005 73.3138593274474 10 18.3999267831224 76.8772291185430 "} sdim l , 1000 sdim fs ,2000 sdim Nmax, 1 noteget Nlmax , 0 mes "Nlmax=" + Nlmax repeat 100 wait 1 //無限ループになるため付加(ByAs) getstr Nmax,Nlmax,i,' ' i += strsize if fs = " " : continue cnt if fs = "" : continue cnt if int(Nmax) >0 : break if Nmax = " " : continue loop sdim NoNode, int(Nmax) sdim XX, int(Nmax) sdim YY, int(Nmax) repeat int(Nmax) n = cnt noteget l , (n+1) i = 1 repeat 3 getstr fs , l , i ,'' i += strsize if fs = " " : continue cnt if fs = "" : continue cnt switch cnt case 0 NoNode.n = int(fs) case 1 XX.n = str(fs) case 2 YY.n = str(fs) swend loop loop repeat int(Nmax) n = cnt + 1 mes "NoNode=" + str(NoNode.cnt) +" XX= "+ str(XX.cnt) +" YY= "+ str(YY.cnt) loop STOP



ANTARES

リンク

2008/3/25(Tue) 00:56:09|NO.14565

 getstrの使い方がわかっていないようなので、サンプル。

l="1 4.739460599914135E-005 73.3138593911322" repeat 3 getstr fs,l,i,' ': i+=strsize mes fs loop

スクリプトの先頭行の前の行に

最後の行の後の行に

失敗したかな?



ANTARES

リンク

2008/3/25(Tue) 01:03:15|NO.14566

あー、やっぱり失敗してる。

begiffさんが全角で書いたのは半角にすると上のように失敗するからです。
<pre>や</pre>は半角で書きましょう。
スペースもね。

それから、スクリプトの先頭行の前の行に<pre>
最後の行の後の行に</pre>



ANTARES

リンク

2008/3/25(Tue) 01:11:54|NO.14567

 hspのswitchは使ったことないのでよくわかりませんが、
「case 2」や「case 3」の前にswbreakがいるのでは?

 命令を研究するためのスクリプトを書いてみて
動作をよく理解してから使うようにしましょう。



ANTARES

リンク

2008/3/25(Tue) 01:16:57|NO.14568

 「Nlmax」を「Nmax」に置換すれば、
repeat 100 〜 loopは不要です。



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