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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0112
通りすがりの鴉vsaveによって保存された内容が勝手に0になってしまいます。4解決


通りすがりの鴉

リンク

2016/1/12(Tue) 12:15:06|NO.74109

通りすがりの鴉と申します。

現在、とあるデータ作成ソフトウェアのシステム設定用に、次のようなスクリプトを作成しています。
この状態でPartitionLetterに何か文字を入力して保存を行い、
もう一度ソフトウェアを起動して内容を読み込むと、
なぜかinputでPartitionLetterに表示される内容が0になってしまっています。

vload直後のstatは0だったので、読み込みに失敗してはいないようですし、
vloadをコメントアウトすると初期値の"_"になるので、input周りが原因ではないと思い、
vsaveの際に内容が勝手に0に書き換えられてしまっているのではないかと推測しています。

原因が何か、わかる方がいればお願いします。


#include "hspda.as" UseShortcut = 1 AskWhenClosed = 1 AskWhenNew = 1 UseDefaultValue = 1 PartitionLetter = "_" vload "Config.dat" screen 0,300,400 title "Config" font msgothic,10 objsize 300,20 mes "ショートカット機能を使用するかどうか。" mes "オンにするとCtrl-Sで保存等のショートカット機能が使えます。" mes "ただし、文字列のコピー、貼り付け等が使えなくなります。" chkbox "UseShortcut",UseShortcut mes "---------------------------------------------------------------" mes "画面右上のバツボタンを押した時にデータを保存するかを" mes "ユーザーに喚起します。ソフト終了の誤爆防止用にどうぞ。" chkbox "AskWhenClosed",AskWhenClosed mes "---------------------------------------------------------------" mes "新規作成ボタンを押した時にデータを保存するかを" mes "ユーザーに喚起します。データ新規作成の誤爆防止用にどうぞ。" chkbox "AskWhenNew",AskWhenNew mes "---------------------------------------------------------------" mes "起動時および新規作成時に一部データの入力例を利用するか。" mes "オフにするとすべて空欄の状態で起動・新規作成されます。" mes "慣れてきたらオフにして構わないと思います。" chkbox "UseDefaultValue",UseDefaultValue mes "---------------------------------------------------------------" mes "チャットパレット変換時のデータの区切り文字を指定します。" mes "基本的にどんな文字でも指定できます。デフォルトは\"_\"です。" input PartitionLetter pos 0,320 objsize 300,80 button "保存",*save stop *save vsave_start vsave_put UseShortcut vsave_put AskWhenClosed vsave_put AskWhenNew vsave_put UseDefaultValue vsave_put PartitionLetter vsave_end "Config.dat" if stat = 0 : dialog "保存しました。" : else : dialog "保存失敗" end



この記事に返信する


スペース

リンク

2016/1/12(Tue) 14:02:33|NO.74110

OSはwindows7 64bit HomePremium。
保存しもう1度スクリプトを実行した所、正常に読み込めました。(保存した内容は全角文章)



KA

リンク

2016/1/12(Tue) 17:59:49|NO.74111

WIN 10 Pro
特に問題なし。



通りすがりの鴉

リンク

2016/1/13(Wed) 12:32:28|NO.74117

皆様わざわざありがとうございます。

環境はスペースさんと同じWindows7 64bit HomePremiumなのですが…

カレントディレクトリを変更したり、ファイル名を変えたり試してみましたが、
何度やっても0になってしまいます。
全く原因がわからない上他の方の再現性もないとなると、デバッグは不可能ですね

ひとまず諦めようと思います、ありがとうございました。



3k

リンク

2016/1/13(Wed) 22:08:44|NO.74119

う〜ん、手元の環境で再現は出来なかったのですがいくつか気になるところをお聞きしたいです。
解決に至るか保証はないんですが、もし答えていただけるなら是非に。

1. ご提示頂いたスクリプトを実行すると正常に値が読み取れませんか?
「Config.dat」を削除するなど真っ新な状態に戻し、エディタ上から実行したとしてもダメですか?
もしそうだったらHSPのバージョンの方知りたいです。

2. 「#cmpopt varname」とか使っていますか?
Exe化した時しか影響がないので、エディタから実行してもダメだった場合この項目は無視してください。
通常hspda.asをincludeした時点で「#cmpopt varname 1」となり、変数名が消えず残るためvload、vsaveで関連するデータが引けることになります。
ただ、意図的に「#cmpopt varname 0」とすると変数名が消えるため、動作の互換性がとれなくなります。(変数の増減でvload時に読めるデータが変わってしまう)

3. 保存した「Config.dat」には正しく「PartitionLetter」のデータが書き込まれていますか?
「Config.dat」はバイナリ列ですが、バイナリエディタから見れば変数名は見えている状態です。
ここでちゃんと「PartitionLetter」が出力されているようならなんとなくデータは大丈夫そうですが…。
もし1、2がダメだった場合、可能でしたらご提示頂いたスクリプトを実行して吐き出した「Config.dat」を頂ければなと思います。

ちょっと長くなりましたが以上です。
興味なかったらこのままスルーで大丈夫です。



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