ini_close はデータをファイルに保存(save)する機能であるとも言えます。
実験用スクリプトをテスト実行してみましょう。以下コードは Object の
Create Event
からアプリ起動時に一回だけ実行されるアクションとして追加してください。
サンプルコード
var IniFileName = "@myinisavetest"; if !file_exists(IniFileName) { // 以下ファイルが存在しない場合の処理 show_message_async("File is NOT Exist >> "+ IniFileName); ini_open(IniFileName); var a,b,c; a = "TEST_SECTION"; b = "TEST_KEY"; c = "TEST_VALUE_GM:S 1.4_INI_Read_Write"; ini_write_string(a,b,c); show_message_async(ini_read_string(a,b,"")); //ini_close(); // ini_closeはわざとコメントにしてあります };
show_message_async
はメッセージ表示関数です。
テスト実行 (F5) すると、まず指定されたファイル名でまだファイルが存在しないはずなので file_exists は false
を返します。
そして一回目のメッセージとして「ファイルが存在しない」と表示されます。新規に INI を作成する関数として ini_open を使います。
ini_open 関数はエラーを返さない仕様
ini_open はファイルが存在しない場合にエラーは返さず、自動的に空のファイルとしてメモリ上に展開します。もちろんファイルがあれば指定されたファイルを開いてデータをメモリ上に展開します。
ini_write_string を使って新規にセクションとキー、そしてバリューを指定します。メモリ上のデータにきちんと書きこまれたかを確認するため ini_read_string を利用してキーから値を取得しこれをメッセージとして表示します。
ここで一旦アクションは終了。テスト実行で表示されたメッセージを確認してください。ini_write と ini_read の内容が一致していれば実験成功です。
しかし意図的に ini_close();
していないので新規作成されたデータはファイルとして保存されませんでした。テスト実行終了後にもう一度テスト実行をすればわかりますが、file_exists では再び false を返します。
開けたら閉める、を習慣に
ファイルにデータを保存したい場合は ini_close();を忘れずに実行してください。
open と close はセットで利用すること、これが INI を使う上で必要な最初の一歩、ファイル入出力の基本です。
ini_open(filename);
/* open と close の間に read,write など命令を挟む、*/
/* read だけの場合でも、open したら close する癖を付けた方が安全です */
ini_close();