エクステンション解説/INI++1.5

Last-modified: 2016-11-28 (月) 19:09:18

INI++1.5とは

INIオブジェクトの強化版です。色々な機能が追加されていますが、一番は暗号化機能でしょう。
暗号化・復号化が自動で行われるので手軽にセーブファイルの暗号化が出来ます。

作成者Jax
バージョン1.5(2011‎年‎5‎月‎1‎日)
対応ランタイムWindows,HWA

入手方法

2016年11月28日現在エクステンションマネージャーの方からダウンロードできるようです
編集者は2の方はもっていないので必要なら2.5であればをつけたし願います

 

最新版は以下のリンク先にありますが、zipの中身はインストーラーなので日本語版にはインストールできません。

 

少し古いですが、以下のリンク先のものはインストーラーではないので日本語版にもインストールできます。

コマンド解説

英語のヘルプは以下のページから参照してください。

暗号化したセーブファイルを読み書きする

詳しい説明は抜きにして、とりあえず暗号化したセーブファイル(iniファイル)を読み書きする手順を解説します。
この手順はあくまで一例です。

サンプル

手順1 プロパティの設定

フレームにINI++1.5オブジェクトを設置したら、プロパティを開いて以下の設定をして下さい。

  • 1.Encryptionにチェックを入れ、右のボックスに暗号化に使用するキーを入力してください(半角英数)。
    このキーを使ってファイルを暗号化・復号化するので、一度キーを決定したら無闇に後から変えないようにしましょう。キーが変わると正しく復号化できません。当然ですがキーは他人にバレないように注意。
  • 2.Use Standard Settings?のチェックを外してください。外さないと暗号化を利用できません。
  • 3.Auto Saveのチェックを外す(任意)
    標準のIniオブジェクトのように、Iniオブジェクトに値や文字列が渡されたら自動でiniファイルの保存を行いたい場合はチェックしたままにして下さい。
    外した場合は、イベントでSaveを実行しない限りiniファイルへの上書きは行われません(今回のサンプルでは外しています)。

手順2 ファイルのロード

今回は、Loadと書かれたオブジェクトをクリックしたら、iniファイルを読み込み、カウンタオブジェクトに値を、エディットボックスに文字列を表示させるようにします。

 

今回のiniファイルの内容は暗号化していないとしたら以下のようになります。

[String]
Text=
[Value]
Counter=

Text=にはエディットボックスに入力した文字列を、Counter=にはカウンタオブジェクトの値を記録します。

 


イベントエディタを開き、行数の数字の上で右クリック挿入イベントグループと選択し、「Load」という名前のグループを作成します。

 


新しい条件をクリックし、マウスポインタとキーボードマウスオブジェクトをクリックするとクリックし、Red button loadを選択します。

 


Ini++1.5のLoading and SavingLoad fileをクリックします。

 


ファイル選択ダイアログではファイルを指定せずに下の数式をクリックします。

 


サンプルでは、iniファイルはMFA(EXE)のあるフォルダのsaveフォルダ内に作成することにしています。
オブジェクトからデータを抽出をクリックし、特別ファイル名アプリケーションパス名をクリックします。
これで挿入された関数Apppath$によってMFA(EXE)のあるフォルダまでのパスが取得できます。
それに続いて+"save\save.ini"と入力します。

 


iniファイルを読み込み専用として読み込むかどうかの指定です。1に指定すると、このファイルに対して書き込みはされません。
サンプルではLoadでは読み込む用途だけに限定しているので1を指定しています。今回開いたファイルパスを書き込み時にも利用する場合は0に指定します。
これでINI++1.5にiniファイルの内容が読み込まれました。
次に読み込まれたデータをそれぞれのオブジェクトヘ渡します。

 


まずは[String]グループのデータからです。
Set Current Groupをクリックし、Stringと入力します。

 


Ensure new group?は既に同名のグループが存在している場合に、末尾に数字を数字を追加して別のグループとして扱うかどうかの指定です。
今回はそうではないので0と指定します。
これでStringグループが指定されました。

 


エディットボックスの編集テキストを変更をクリックします。

 


オブジェクトからデータを抽出をクリックし、INI++1.5のCurrent groupGet Item Stringをクリックします。
最初のパラメータ(Item)は項目名です。iniファイル内で文字列を保存しているのはTextなので"Text"と入力します。
2番目のパラメータ(default string)は先の項目名からデータを得られなかった場合に返す代替の文字列を指定します。
これでエディットボックスにiniファイルに記録された文字列を表示することが出来ました。

 

[Value]グループのデータをカウンタに入れる方法も基本的には同じです。
INI++1.5のSet Current Groupをクリックし、Valueと入力します。

 


カウンタオブジェクトのカウンターをセットをクリックします。

 


オブジェクトからデータを抽出をクリックし、INI++1.5のCurrent groupGet Item Valueをクリックします。
Item"Counter"と入力します。default valueは特に特定の値を返す必要がない場合は0と入力します。

 

これでカウンタにiniファイルに記録された値を表示することが出来ました。

 


Close iniを実行するとINI++1.5に読み込まれたデータを破棄します。通常は必要ありませんが、メモリ上のデータは暗号化されていないので、心配なら読み込みが終わったら閉じても良いでしょう。
ただし、セーブ時にロードで開いたファイルパスを引き続き使う場合(Auto Save利用時も)は閉じると使えなくなります。

 


今回のイベントの順番はこのようになります。
グループの指定とデータの取得のアクションの順番が逆になっていたりすると正しく動作しませんので注意してください。

手順3 ファイルのセーブ

コメント

  • 丁寧な解説ありがとうございます。質問なのですが、Ini++のアクション指定時に「ファイル名変更」→「アプリケーションパス名」が指定できません。標準のIniでも起きるのですがどういったことが原因なのでしょうか?ちなみにMMF2 Dev使用です。 -- RIN? 2014-09-06 (土) 16:14:35
  • 連投すみません。ビルド形式を.exe以外にしたら上の問題が起きるようです…。AndroidやiOSで使えたらなぁ。。。 -- RIN? 2014-09-06 (土) 16:48:54
  • EXE以外の形式ではパスの指定は不要で、単にファイル名だけ指定します。ビルド形式を変更してグレーアウトする項目は非対応な機能ということです(稀にグレーアウトしてないけど非対応という場合もある)。あとINI++はEXEにしか対応してませんよ。 -- ASD? 2014-09-06 (土) 18:34:43