|
|
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
|
|
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>間で囲ったほうが見やすいデスゾ^^
|
|
2008/3/25(Tue) 00:04:41|NO.14562
>アドバイスいただきたくお願いしまっす.m(__)m
まともに答える気がしないので揚げ足を取っておきます。
・noteloadがない
・noteselがない
ちょっとだけアドバイス。
dialog "fs="+fs,2: if stat==7: end
|
|
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>
| |
|
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
| |
|
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
スクリプトの先頭行の前の行に 、
最後の行の後の行に
失敗したかな?
|
|
2008/3/25(Tue) 01:03:15|NO.14566
あー、やっぱり失敗してる。
begiffさんが全角で書いたのは半角にすると上のように失敗するからです。
<pre>や</pre>は半角で書きましょう。
スペースもね。
それから、スクリプトの先頭行の前の行に<pre>
最後の行の後の行に</pre>
|
|
2008/3/25(Tue) 01:11:54|NO.14567
hspのswitchは使ったことないのでよくわかりませんが、
「case 2」や「case 3」の前にswbreakがいるのでは?
命令を研究するためのスクリプトを書いてみて
動作をよく理解してから使うようにしましょう。
|
|
2008/3/25(Tue) 01:16:57|NO.14568
「Nlmax」を「Nmax」に置換すれば、
repeat 100 〜 loopは不要です。
|
|