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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0321
まこっぺちーの2回目以降の、notesaveがうまくいかないです・・・。2未解決


まこっぺちーの

リンク

2013/3/21(Thu) 02:02:49|NO.53123

“インプットボックスに入力された文章の中に、「test.txt」に含まれる単語があった場合、
それに対応する返答をメッセージボックス内に表示する”
・・・というプログラムを作りたいと思っています。

とりあえず、以下のようにスクリプトを書いてみました。
「送信」ボタンを押す1回目はうまくいくのですが、2回目はエラーになります。
2回目には、「返答管理.txt」が白紙で保存されてしまい、うまくいきません。
どなたか解決法をご指南いただけませんか?

問題のある部分を一部抜粋し訂正でも構いません。
その際はどこに挿入すべきかも教えていただけると大変ありがたいです(TAT)



【スクリプト】
randomize
sdim c,320 sdim d,320 sdim word sdim buf2 sdim ans notesel buf noteload "test.txt" del_gyo = notemax mesbox ans,400,100,0 input word,400,25 button "送信",*dousa stop *dousa   repeat notemax memexpand c,4080 memexpand d,4080 getstr c(cnt),buf,idx,'%' idx = idx+strsize getstr d(cnt),buf,idx if instr(word,,c(cnt))>=0:noteadd d(cnt),,0 idx = idx+strsize   loop      notesave "返答管理.txt"      notesel buf2      noteload "返答管理.txt"      repeat del_gyo      notedel 0      loop      notesave "返答管理.txt"      noteload "返答管理.txt"      r = rnd(notemax);←ここでエラーが起こる。      noteget ans,r      objprm 0,ans      stop



【test.txtの内容】
りんご%赤くておいしい実です
りんご%禁断の果実
みかん%オレンジ色の実です
りんご%英語ではapple
みかん%冬が旬!
もも%美味しいけど、高いんです
もも%柔らかくてジューシー
みかん%ジャパニーズ・オレンジ?
みかん%ヘタから剥くか、ヘソから剥くか・・・

↑%より左にあるフルーツ名が文章(関数word)に含まれていた場合、
 その単語の%より右が表示されるというプログラムを目指しています。

【やりたかったこと↓】
例)1.「美味しいもも」と入力
  2.今回の「もも」に対応する返答は
    「美味しいけど高いんです」と「柔らかくてジューシー」。
     この2つが「返答管理.txt」に1行ずつ保存される。
  3.「返答管理.txt」のうち一つの行がランダムで選ばれる
  4.メッセージボックス内に「柔らかくてジューシー」が表示される



この記事に返信する


fortunehill

リンク

2013/3/21(Thu) 17:03:36|NO.53131

/*ご参考(返答履歴に修正+検索部分簡略化)*/

randomize sdim buf sdim buf2 sdim buf3 sdim ans sdim word word = "美味しいもも" nn = "返答管理.txt" buf = {"りんご%赤くておいしい実です りんご%禁断の果実 みかん%オレンジ色の実です りんご%英語ではapple みかん%冬が旬! もも%美味しいけど、高いんです もも%柔らかくてジューシー みかん%ジャパニーズ・オレンジ? みかん%ヘタから剥くか、ヘソから剥くか・・・"} notesel buf exist "test.txt" :if (strsize != -1) {noteload "test.txt"} mesbox ans,400,100,0 input word,400,25 button "送信",*dousa stop *dousa buf2 = "" objprm 0,"" notesel buf repeat notemax noteget ss,cnt split ss,"%",ss if (instr(word,0,ss) >= 0) {buf2+= ss(1)+"\n"} loop if (buf2 != "") {notesel buf2 r = rnd(notemax) :noteget ans,r :objprm 0,ans exist nn :if (strsize != -1) {notesel buf3 :noteload nn :buf3+= ans+"\n"} notesave nn} stop



まこっぺちーの

リンク

2013/3/22(Fri) 22:42:16|NO.53157

解決しましたー!!(>_<。)
迅速なご回答、ありがとうございます!!!



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