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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1013
mamoファイルパスの保存9解決


mamo

リンク

2010/10/13(Wed) 22:58:18|NO.35340

チェックボックスの状態とファイルパスの保存をしたいのですが、
dialogを使いファイルを指定させ
a=refstr としてパスを取得
メモリノートパッド命令を使って保存すると、上記で取得したパスへデータが保存されます。
データの保存場所はプログラム自身と同じ場所にしたいのですがどのような方法を取ればよいでしょう。

dialog "exe",16 aaa=refstr data="" notesel data noteadd aaa,0 noteadd "bbbt="+b,1 noteadd "ccc="+a,2 notesave "test.txt"
実際にはチェックボックスの状態の取得があったり、保存もbuttonを使って行われます。



この記事に返信する


damage

リンク

2010/10/13(Wed) 23:54:07|NO.35342

>データの保存場所はプログラム自身と同じ場所にしたいのですがどのような方法を取ればよいでしょう。

プログラム・実行ファイルの置かれているパス・ディレクトリを取得してください。ヘルプに載ってます。



ANTARES

リンク

2010/10/14(Thu) 00:11:57|NO.35344

 初期化時にシステム変数dir_curを変数に保存し、
その変数+"\\ファイル名"に保存します。
dir_curの初期値は、コンパイル+実行時はスクリプトのあるフォルダ、
exeファイルにした場合はexeファイルのフォルダになります。
しかし、dir_curは変化する可能性があるので、変数に保存する必要があります。



damage

リンク

2010/10/14(Thu) 00:15:34|NO.35345

> 初期化時にシステム変数dir_curを変数に保存し、
>その変数+"\\ファイル名"に保存します。
>dir_curの初期値は、コンパイル+実行時はスクリプトのあるフォルダ、
>exeファイルにした場合はexeファイルのフォルダになります。
>しかし、dir_curは変化する可能性があるので、変数に保存する必要があります。

釣られてみるが、
あんたれす ともあろう物がまさかdir_curを参照しようなどとは・・・。



mamo

リンク

2010/10/14(Thu) 02:57:13|NO.35348

ありがとうございます
dir_exeを使い実行ファイルにしてテストしたところ上手く保存出来ました。
テストでの確認が出来ないのが問題ですけど
パスの取得を行わないようにしてテストしていきたいと思います。
dir_curではパスの取得で場所が変わってしまうようでダメでした;

これで目的の第一段階をクリア出来ました、本当にありがとうございます。
また質問を上げた際にはよろしくお願いいたしますm(__)m



たんす

リンク

2010/10/14(Thu) 22:45:20|NO.35355

スクリプトエディタの[HSP]-[起動オプション]でコマンドラインの指定が出来ます。
実行ファイルにしたときはコマンドラインが空になると思うので、
テスト中か、実行ファイルなのかを判断できるかと思います。


;//スクリプトの早い段階でファイルパスを取得。 temp_cur = "" + dir_cur ;mes "コマンドライン=" + dir_cmdline ;//中略 *save aaa = "" if dir_cmdline = "テスト中"{ aaa = "" + temp_cur ; mes "カレントパスを取得しました。" }else{ aaa = "" + dir_exe ; mes "実行ファイルパスを取得しました。" } ;mes "" + aaa stop
起動オプションを変更して試してみてください。



Sucret

リンク

2010/10/15(Fri) 00:12:43|NO.35363

>たんす様

実行ファイルの場合でもコマンドラインが必ず空になるとは限りませんよ?
実行ファイルに別のファイルをドラッグ&ドロップして起動したり、
作成した実行ファイルに関連付けしたファイルを開く、
プログラムから開くで作成した実行ファイルで開かれた場合などの場合では
そのファイル自体のパスがコマンドラインに入ります。

_debugのヘルプに載っているサンプルですがこのような方法もありますよ。

#ifdef _debug mes "デバッグモードです。" #else mes "デバッグモードではありません。" #endif stop



たんす

リンク

2010/10/15(Fri) 00:37:11|NO.35364

>Sucretさま
ご指摘ありがとうございます。

前述スクリプトは、
”コマンドラインが指定文字列以外の場合は実行ファイルと判定する”ものでしたが、


#ifdef _debug aaa = "" + dir_cur #else aaa = "" + dir_exe #endif ;//後略 stop
こちらのほうがスマートですね。
実行ファイルを公開するときに修正する必要がないのは素晴らしい事です。



ANTARES

リンク

2010/10/15(Fri) 00:38:32|NO.35365

>dir_curではパスの取得で場所が変わってしまうようでダメでした;
 だから、変数に保存しろと書いたのに……。
ひょっとしてと思ってWin7でテストしてしまったじゃないですか。

まあ、あえて不便な方を使いたいのであれば別に止めませんが。



mamo

リンク

2010/10/15(Fri) 16:01:55|NO.35375

追加情報をありがとうございます。
動きが理解できたので、保存が正しく行われるかどうかは実行ファイル作成後のみでOKとしています。

動作確認が頻繁に必要であったり、確認作業が手間だと思うようになれば参考にさせていただきたいと思います。



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