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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1014
dorinkochkboxの状態保存15解決


dorinko

リンク

2008/10/14(Tue) 09:49:02|NO.20133

こんにちは。
久しぶりに前作ったランチャーを改良したいと思い、
設定を変更するchkboxを設置しようとしています。
そこで、自分なりに色々やってみて
一応chkboxの設置はできて、
次はそれぞれのchkboxの状態をテキストに保存しようと思ってるのですが、
それができません;;
一応、調べたりはしてみたのですが、やはりわかりません;
初歩的な質問ですが、どなたか教えてくださいm(._.)m





nbtn=10 fire = "設定保存用 テキスト.txt" karent = dir_cur exist fire ;テキストファイルのチェック if strsize= 0 :goto ,*yomi if strsize=-1 : dialog "データが読み込めないので、設定が初期化されました",1,"設定の初期化" : goto ,*syokika *yomi ;設定読み込み sdim btn,64,nbtn sdim inp,500,nbtn sdim pro,500,nbtn sdim butn,64,nbtn sdim chk,64,nbtn sdim ch,64,nbtn notesel np noteload fire repeat nbtn noteget btn.cnt,cnt+1 noteget pro.cnt,cnt+12 loop noteget butn,11 *modoru ;メイン画面 screen 0,200,300 color 166, 202, 240 : boxf title "ランチャー" objsize 100,50 repeat nbtn pos (cnt\2)*100,cnt/2*50 button btn.cnt,*m loop objsize 100,50 pos nbtn*0,nbtn/4*125 : button goto "設定",*setei pos nbtn*10,nbtn/4*125 : button goto "終了",*owari stop *setei ;設定画面 screen 0,427,325 color 166, 202, 240 : boxf x = 32 y = 5 repeat nbtn pos x-23,y+3 : objsize 12,12 : chkbox "",cnk.cnt inp.cnt=btn.cnt pos x,y : input inp.cnt,105,22 pos x+110,y+3 : input pro.cnt,208,16 objsize 65,21 pos x+324,y : button butn,*b y+=25 loop x = 105 : y = 34 px = 32 : py = 286 objsize x,y pos px,py : button goto "詳細設定",*syosete objsize x+103,y pos px+110,py : button goto "登録して戻る",*touroku objsize x-40,y pos px+324,py : button goto "キャンセル",*modoru stop *syosete ;詳細設定画面 stop *b objid=stat ;押されたボタンのオブジェクトID dialog "exe", 16, "" if stat=1 { i=objid/4 pro.i=refstr objprm i*4+2,pro.i ;入力ボックスにpro.iをセットする } stop *m i=stat ;押されたボタンのオブジェクトID exec pro.i stop *owari end *touroku ;設定保存 notesel np chdir karent repeat nbtn btn.cnt = inp.cnt noteadd btn.cnt,cnt+1,1 noteadd pro.cnt,cnt+12,1 noteadd chk.cnt,cnt+22,1 loop notesave fire goto *modoru *syokika ;設定初期化 notesel np noteadd "※このテキストは設定保存用ですので、削除しないでくださぃ。(削除すると、設定が初期化されます)" repeat nbtn a = int(cnt)+1 noteadd "未設定ボタン"+a+"",cnt+1,1 loop noteadd "参照",11,1 notesave fire goto *yomi



この記事に返信する


ken

リンク

2008/10/14(Tue) 12:34:34|NO.20135

チェックボックスの状態を保持する変数を保存しchkboxを設置する前に読み込めば良いです
が、全部cnkではダメです。



ken

リンク

2008/10/14(Tue) 12:39:00|NO.20137

すみません訂正します。

>全部cnkではダメです。
cnk.cntを保存すれば良いです。



SYAM

リンク

2008/10/14(Tue) 12:40:09|NO.20138

?配列 chk を sdim ではなく dim で作るように変える(数値扱いにする)
?chk を noteadd するときに ""+chk のようにする(文字列扱いにするため)
?noteget のときに 、

noteget tmp,cnt+22:chk.cnt=int(tmp)
 …のように、文字として読み出したものを数値に変換しつつ配列に格納する
?chkbox 命令に与えているパラメータ cnk を chk にする

…で どうでしょう。
あと、notegetに与えている“インデックス”は、変数nbtnから計算しないといけませんね。+12 とかしてあると、nbtnが10でないときに変なことに なりませんか?



ken

リンク

2008/10/14(Tue) 12:46:21|NO.20139

追伸
cnk.cntは配列変数なのでbload/bsaveで保存すれば良いですがどうしてもTXTファイルに保存
したければ数値→文字変換する必要がありますね。



SYAM

リンク

2008/10/14(Tue) 12:50:00|NO.20140

|||-`ω-) なんでこの掲示板は 全角中点(真ん中に点のみの記号)が化けるんだろう…(汗)



SYAM

リンク

2008/10/14(Tue) 13:45:39|NO.20142

button命令のところも直さないと 配列chkが使われずじまいになると思いますが、直しましたか?



SYAM

リンク

2008/10/14(Tue) 14:06:31|NO.20145

すみません、完璧に私の間違いです
buttonでなく chkbox 命令でした。
○|?|_



dorinko

リンク

2008/10/14(Tue) 14:17:55|NO.20146

すぃません;
さっきの書き込みは削除しました(ついでにミスして他のまで消しちゃいました^^;)
余分?なところも消したつもりです。
けどまだ保存ができなぃんです。

それで、下記が現在のスクリプトです


nbtn=10 fire = "設定保存用 テキスト.txt" karent = dir_cur exist fire ;テキストファイルのチェック if strsize= 0 :goto ,*yomi if strsize=-1 : dialog "データが読み込めないので、設定が初期化されました",1,"設定の初期化" : goto ,*syokika *yomi ;設定読み込み sdim btn,64,nbtn sdim inp,500,nbtn sdim pro,500,nbtn sdim butn,64,nbtn dim chk,64,nbtn notesel np noteload fire repeat nbtn noteget btn.cnt,cnt+(nbtn-9) noteget pro.cnt,cnt+(nbtn+2) noteget tmp,cnt+22 : chk.cnt=int(tmp) loop noteget butn,11 *modoru ;メイン画面 screen 0,200,300 color 166, 202, 240 : boxf v = "ver.1.0" title "ランチャー "+v+"" objsize 100,50 repeat nbtn pos (cnt\2)*100,cnt/2*50 button btn.cnt,*m loop objsize 100,50 pos nbtn*0,nbtn/4*125 : button goto "設定",*setei pos nbtn*10,nbtn/4*125 : button goto "終了",*owari stop *setei ;設定画面 dim chk,64,nbtn screen 0,427,325 color 166, 202, 240 : boxf x = 32 y = 5 repeat nbtn pos x-23,y+3 : objsize 12,12 : chkbox "",chk.cnt inp.cnt=btn.cnt pos x,y : input inp.cnt,105,22 pos x+110,y+3 : input pro.cnt,208,16 objsize 65,21 pos x+324,y : button butn,*b y+=25 loop pos 9,260 color 0,0,0 mes "↑チェックありで確認メッセージの表示" x = 105 : y = 34 px = 32 : py = 286 objsize x,y pos px,py : button goto "詳細設定",*syosete objsize x+103,y pos px+110,py : button goto "登録して戻る",*touroku objsize x-40,y pos px+324,py : button goto "キャンセル",*modoru stop *syosete ;詳細設定画面 stop *b objid=stat ;押されたボタンのオブジェクトID dialog "exe", 16, "" if stat=1 { i=objid/4 pro.i=refstr objprm i*4+2,pro.i ;入力ボックスにpro.iをセットする } stop *m i=stat ;押されたボタンのオブジェクトID exec pro.i stop *owari end *touroku ;設定保存 notesel np chdir karent repeat nbtn btn.cnt = inp.cnt noteadd btn.cnt,cnt+1,1 noteadd pro.cnt,cnt+12,1 noteadd ""+chk.cnt+"",cnt+22,1 loop notesave fire goto *modoru *syokika ;設定初期化 notesel np noteadd "※このテキストは設定保存用ですので、削除しないでくださぃ。(削除すると、設定が初期化されます)" repeat nbtn a = int(cnt)+1 noteadd "未設定ボタン"+a+"",cnt+1,1 loop noteadd "参照",11,1 notesave fire goto *yomi



dorinko

リンク

2008/10/14(Tue) 14:27:01|NO.20147

ぁっ、
ホントにすいません;
↑のスクリプトで保存ができました^^;
みなさんありがとぅございます。
では、また質問があった時はお願いします。



SYAM

リンク

2008/10/14(Tue) 14:52:44|NO.20148

できないと思ったのは多分、勘違いではないですよ。
↑のスクリプトは、初回だけチェックボックス状態の保存に失敗します。
初回の動きに気をつけてみてください。
また、初回に限らず読み込みもできません…が、これはすぐに直せるでしょう。



dorinko

リンク

2008/10/14(Tue) 18:05:16|NO.20153

>できないと思ったのは多分、勘違いではないですよ。
>↑のスクリプトは、初回だけチェックボックス状態の保存に失敗します。
>初回の動きに気をつけてみてください。

初回は失敗するんですかー。
ですが、なぜ失敗するんでしょうか?

>また、初回に限らず読み込みもできません…が、これはすぐに直せるでしょう。

ちょこちょこ変えてみたんですが、やっぱり読み込みができません(・Θ・;))
何度もすいませんが、どなたかアドバイスお願いしますorz



SYAM

リンク

2008/10/14(Tue) 19:26:18|NO.20156

読めないのは、その ちょこちょこ が原因です。
最初のスクリプトには、読むのを邪魔している命令は入っていません。
ファイルから読み出してから、実際にそれを使うまでの間に、 何かしてはいけないことをしていませんか??


初回の書き出しに失敗するのは、
当然「初回しかしてない処理のどこかがおかしい」からです。

メモリノートへの書き込みが足りないところが ありませんか?



dorinko

リンク

2008/10/14(Tue) 20:49:12|NO.20161

>最初のスクリプトには、読むのを邪魔している命令は入っていません。
>ファイルから読み出してから、実際にそれを使うまでの間に、 何かしてはいけないことをしていませんか??

ぅーん。
何回みても私には、わかりませんorz
度々すいませんが、どなたかご教授願います;;



>初回の書き出しに失敗するのは、
>当然「初回しかしてない処理のどこかがおかしい」からです。

>メモリノートへの書き込みが足りないところが ありませんか?

初回の処理といったら、『初期化設定』かな?
そこで、『初期化設定』のとこをちょっと変えたんですが、
なぜか追加した文が保存されませんorz
自分的にはこれで保存されると思ってるんですが、どこが違うのでしょうか?;;


前の記事のスクリプトで変更したところは、今のところ下記の部分だけです。

*syokika ;設定初期化 notesel np noteadd "※このテキストは設定保存用ですので、削除しないでくださぃ。(削除すると、設定が初期化されます)" repeat nbtn a = int(cnt)+1 c = int(0) noteadd "未設定ボタン"+a+"",cnt+1,1 noteadd "プログラムの選択",cnt+12,1 noteadd ""+c+"",cnt+22,1 loop noteadd "参照",11,1 notesave fire goto *yomi



SYAM

リンク

2008/10/14(Tue) 21:27:48|NO.20163

まず読み込みの失敗に関して。

せっかく配列chkにデータを読み込んだのに、
設定画面を開くための処理の一番最初で、いきなり配列を初期化しちゃってます。
これでは、どんな設定になっていようと設定画面を開いた瞬間、絶対確実に全部カラッポになります。

次、初期化。
初期化の時点では、設定ファイルを作るためのメモリノートはカラっぽです。
1行目を書くところまではいいんですが、(cnt+12)行目がまだ存在しないのにそれを上書きしようとしています。
これだと書き込まれませんね。



dorinko

リンク

2008/10/14(Tue) 22:24:30|NO.20165

>せっかく配列chkにデータを読み込んだのに、
>設定画面を開くための処理の一番最初で、いきなり配列を初期化しちゃってます。
>これでは、どんな設定になっていようと設定画面を開いた瞬間、絶対確実に全部カラッポになります。

ホントに初期化しちゃってましたね^^;
これで、読み込みはできるょうになりました^^

>次、初期化。
>初期化の時点では、設定ファイルを作るためのメモリノートはカラっぽです。
>1行目を書くところまではいいんですが、(cnt+12)行目がまだ存在しないのにそれを上書きしようとしています。
>これだと書き込まれませんね。

その通りですね(・Θ・;)
一応、自分なりに考えた結果下記のようになりました。
これで、初回からも設定が保存されるようになりました(^-^*)
何度も質問に答えていただき、本当にぁりがとうございます。
また何かありましたら、その時はお願いします(-m-)





*syokika ;設定初期化 notesel np noteadd "※このテキストは設定保存用ですので、削除しないでくださぃ。(削除すると、設定が初期化されます)" repeat nbtn a = int(cnt)+1 noteadd "未設定ボタン"+a+"",cnt+1 loop noteadd "参照",11 c = int(0) repeat nbtn noteadd "",cnt+12 noteadd ""+c+"",cnt+22 loop notesave fire goto *yomi



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