|
|
2010/10/12(Tue) 17:29:24|NO.35316
HSPにたどり着き勉強中です。
変数のの保存を行いたいと思い、チェックボックスでの状態の保存と復元をしてみました。
文字データで保存し取り出してintを使って数字として変数へ
このような使い方でよろしいでしょうか。
尚 上書きするにはどうしたらよいでしょう。
;ファイルチェック 無ければ作成
exist "test-x.txt"
if strsize=-1 {
notesel data
notesave "test-x.dat"
}
;ファイルの読み込みと変数へ
notesel data
noteload "test-x.dat"
noteget a,0
noteget b,1
noteget c,2
noteget d,3
a=int(strmid(a,-1,1))
b=int(strmid(b,-1,1))
c=int(strmid(c,-1,1))
d=int(strmid(d,-1,1))
;
pos 100,200
objsize 40,30
button "保存",*save
; チェックボックス
pos 100,10
objsize 142, 30
chkbox "aaa",a
pos 100,50
objsize 142, 30
chkbox "bbb",b
pos 100,90
objsize 142, 30
chkbox "ccc",c
pos 100,130
objsize 142, 30
chkbox "ddd",d
stop
*save
notesel data
noteadd "aaa="+a,0
noteadd "bbb="+b,1
noteadd "ccc="+c,2
noteadd "ddd="+d,3
notesave "test-x.txt"
mes "保存しました"
|
|
2010/10/12(Tue) 20:17:29|NO.35319
読み込み元ファイルの拡張子が".dat"であり、
状態保存先ファイルの拡張子が".txt"になっているため
次回起動時に変数がリセットされているようです。
読み込みと保存を同じファイルにすることで前回の状態を読み込めました。
;//前略
*save
notesel data
noteadd "aaa="+a,0
noteadd "bbb="+b,1
noteadd "ccc="+c,2
noteadd "ddd="+d,3
; notesave "test-x.txt" ;//保存先の変更
notesave "test-x.dat"
mes "保存しました"
|
|
2010/10/12(Tue) 21:43:54|NO.35322
ご指摘ありがとうございます
編集途中の半端な状態をコピペしてしまいました;
(保存ファイルの名前・拡張子は同じにしてあります)
保存されたファイルを確認すると、上書きされずに追加されています。
これを上書きとしたいのと、データ保存の手法として問題ないか教えてもらいたいと思います。
|
|
2010/10/12(Tue) 22:05:33|NO.35323
上書きについては、とりあえず、noteselで指定している
dataを、中身が必要なくなった時点で""で初期化してから、
あらためて、dataに追加して、ファイルに書き出せば、
大きくはならないようです。
HSPでのファイル保存方法としては、とりあえず問題は
ないとは思います。
;ファイルチェック 無ければ作成
;test-x.txtは不要
;test-x.datに直接データを保存すればいい
exist "test-x.dat"
if strsize=-1 {
;念のため、dataの中身を空にする
data = ""
notesel data
a = "aaa=0"
b = "bbb=0"
c = "ccc=0"
d = "ddd=0"
noteadd a
noteadd b
noteadd c
noteadd d
;a、b、c、d、の変数名と初期値を保存
notesave "test-x.dat"
}
;ファイルの読み込みと変数へ
;念のため、dataの中身を空にする
data = ""
notesel data
noteload "test-x.dat"
noteget a,0
noteget b,1
noteget c,2
noteget d,3
a=int(strmid(a,-1,1))
b=int(strmid(b,-1,1))
c=int(strmid(c,-1,1))
d=int(strmid(d,-1,1))
;
pos 100,200
objsize 40,30
button "保存",*save
; チェックボックス
pos 100,10
objsize 142, 30
chkbox "aaa",a
pos 100,50
objsize 142, 30
chkbox "bbb",b
pos 100,90
objsize 142, 30
chkbox "ccc",c
pos 100,130
objsize 142, 30
chkbox "ddd",d
stop
*save
;dataの中身を空にしておかないと、test-x.datがどんどん大きく
;なっていく。
data = ""
notesel data
noteadd "aaa="+a,0
noteadd "bbb="+b,1
noteadd "ccc="+c,2
noteadd "ddd="+d,3
notesave "test-x.dat"
mes "保存しました"
| |
|
2010/10/13(Wed) 01:13:28|NO.35327
="" なるほど〜 です。
ありがとうございました。
|
|
2010/10/13(Wed) 01:15:57|NO.35328
解決のチェック入れ忘れましたm(__)m
|
|
2010/10/13(Wed) 03:36:39|NO.35329
noteaddで、データを追加ではなく、上書きする方法が
ありました。
noteadd "aaa="+a,0,1のように、3番目のパラメータが1だと、
データを追加ではなく、上書きします。
data を一度クリアして、追加モードであらためてnoteaddする
のもいいんですが、データが大量になると、非常に面倒なので、
noteaddで、上書き指定するほうが、スマートでしょう・・・。
ただし、dataの中身をクリアしたり、間違って他の場所で追加
モードでnoteaddを使ってたりした状態で、データの一部分だけ
上書きすると、データがおかしなことになるので、そこのとこ
ろは注意したほうがいいです。
あと、今回のこととはあまり関係ないですが、連発してボタンを
クリックして、データを保存してると、"保存しました"のメッセ
ージがどんどん下に表示されていき、ウィンドウ外にまでいっち
ゃいます。
*save
;dataを空にする必要なし。
notesel data
;noteaddの3番目のパラメータを1にする。
noteadd "aaa="+a,0,1
noteadd "bbb="+b,1,1
noteadd "ccc="+c,2,1
noteadd "ddd="+d,3,1
notesave "test-x.dat"
mes "保存しました"
|
|
2010/10/13(Wed) 18:01:54|NO.35333
追加情報をありがとうございます。
noteadd に第三パラメータがあったのですね、頭に残しておきます。
保存したときのメッセージですが、
動きを見るために付けただけなので現状での表示はどうでも良いのです^^;
今度は文字列の保存にぶつかっていますので、別途質問したらよろしくお願いしますm(__)m
|
|