UWSCでiniファイルの読み書きを少しだけ快適にする

UWSCで設定保存とかしたいときはiniファイルに書くのが便利で簡単
でも、readini()writeini()をたくさん書いてるとちょいちょい引数間違ったりして危ない
セクションとかキーをリテラルで何度も書くのは良くない
なんかもっとこう一箇所で保持しとくべきだ

なのでこうします

module INI

    dim iniFile

    // 読み書き用関数、これを必要に応じて書き加えます

    function Hoge(value = NULL)
        result = `("hogehoge", "Hoge", value)
    fend

    function Piyo(value = NULL)
        result = `("piyopiyo", "Piyo", value)
    fend
    
    // 対象iniファイル名変更用関数
    procedure SetFileName(name = EMPTY)
        iniFile = name
    fend

    // 読み書き処理の実体
    function `(section, key, value)
        if value = NULL
            result = readini(section, key, iniFile)
        else
            writeini(section, key, value, iniFile)
            result = EMPTY
        endif
    fend
    
endmodule

キーに対しての読み書きを一つの関数にまとめました
ここではHogePiyoがそれです
こうすることで、引数なしで呼び出した場合は値の読み出し、引数を渡した場合は書き込みになります
GetterやSetterの用に使えるわけですよ
素敵ですね

読み書き用の関数は引数を一個だけ取るようにして、省略時はNULLになるようにしときます
中では`()関数を呼んでその戻り値を返すだけです
ここで、アクセス先のセクションとキーを指定します

    result = `("セクション名", "キー", value)

呼び出してる関数名が変なのはこうしとくと外から呼び出す気にならなくなるからで、特に意味はないです

実際使った感じ

INI.Hoge("みなもちゃんかわいい!")
print INI.Hoge()
INI.Hoge("うなもちゃんかわいい?")
print INI.Hoge()
INI.Piyo("( ‘(I¥‘)")
print INI.Piyo()

print結果

みなもちゃんかわいい!
うなもちゃんかわいい?
( ‘(I¥‘)

iniファイル

[hogehoge]
Hoge=うなもちゃんかわいい?
[piyopiyo]
Piyo=( ‘(I¥‘)

気を付けるのが呼び出す関数名だけになるのでとても精神衛生に良くなりましたね

おまけ

今回これ書く際に初めて気付いたんだけどreadini()writeini()

INIファイル名: デフォルト(省略時)では、カレントディレクトリに スクリプト名.INI

なんですけどこれ省略時だけじゃなくてEMPTY渡してもデフォルトファイル名になるのね
以前はわざわざ

if iniFile = EMPTY then
    readini(section, key)
else
    readini(section, key, iniFile)
endif

とかしてたけどそんな必要なかったのです

おくやみ

関数書き足すときの手間をなるべく減らしたかったんだけど、例えば引数の value = NULL とかいちいち書かせたくなかったんだけど、ちょっとどうしようもなかった
eval先生とかが頭をよぎったけど先生はそのままどっか行ってしまわれた

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中