while〜wendを、配列の各変数に対してrepeatしたいのですが、
下記の様にすると、何故かrepeatが上手くいかず、
「配列(0)」しか処理できません。どなたか、間違いを診て戴けないでしょうか?
構文はあってると思うんですが・・・。
;「書き方がバラバラなテキストが有って、ここから余分なスペースを全て取りたい」 ;というのが、ソリューションの目的です。 sdim FlootList FlootList(0)="りんご 3 個" ;1行目 FlootList(1)=" み か ん 2 個" ;2行目 FlootList(2)="いちご 10 個" ;3行目 FlootList(3)="ぶどう 2 個" ;4行目 FlootList(4)="なし 1 個 " ;5行目 ;一行ずつ配列変数のまま、処理する事にしました。全部ひとつのnotesel変数に入れて ;一気に処理しても良いのですが、長い文字列を処理しようとすると、技術が付いて行かないので。汗 tmp=0 repeat 5 Letters=FlootList(tmp) ;ここからスペースの削除開始 while CheckPosition!-1 CheckPosition=instr(Letters,0," ") Letters=strmid(Letters,0,CheckPosition)+strmid(Letters,CheckPosition+1,200) wend ;ここでスペースの削除終わり。見ての通り、いちいち文字列の先頭から検索をやり直してます。 ;もう少しスマートなやり方は勉強中。このやり方で長文を処理しようとすると固まる! ;なので、1行ずつ配列に入れたまま小分けにして処理しようとしています。 FlootList(tmp)=Letters ;次のFlootListの処理へ tmp++ loop ;結果出力 tmp=0 repeat 5 mes FlootList(tmp) tmp++ loop
PS
そもそもスペースの削除がヘタクソなのもいけないんですが・・。
これは文字列の検索・置換の勉強も必要でしょうね。Webで検索できる関連のサンプルコードは
ちょっと応用が入っている上、たいていHSP3では使えないobjsendとかを使ってあるので、
カンタンには理解できなくて・・。ちよっと後回し。
目下の敵は、「大量に連続しているスペース」だけですが、色々な事を一度に質問すると、
分かんなくなるので、できるだけ問題を分解して、質問しようと思っています。
とりあえず、上の例で一番問題なのは、repeatとwhileのネストが上手く行ってない事だろうと
自分では判断しているのですが・・・。もしかしたら、他にも勘違いがあるかも・・。