UWSC|iniファイルを扱う自作関数

ポク太郎です。

あらかじめ設定した値によりプログラムの動きを変化させられるiniファイルって便利です。実行環境の違いを吸収したり、テストする場合にも重宝。

UWSCには標準でiniファイルの読み書きを行う関数が用意されています。

個別アプリにサッとiniファイルの使用環境を整えられるよう、初回起動時はiniファイル作成、違うなら設定値読み込む関数を作っておきます。


iniファイルを簡単に扱うiniprep()関数

仕様は「初回起動時にはiniファイルを作る、違うなら設定値読み込む」。

また、iniファイルはソフト毎に異なるのでその度に作り直し要→常にインクルードされるファイルではなく、ソフト個別のソースにのみ記述しておくべき。

FUNCTION iniprep()
            tmp=READINI("メモ","自分専用の.iniファイルだよ")
      IF tmp=""
            WRITEINI("メモ","自分専用の.iniファイルだよ","1")

            WRITEINI("設定","DOS窓パス","C:\WINDOWS\system32\cmd.exe")
            WRITEINI("設定","Firefoxパス","C:\Program Files\Mozilla Firefox\firefox.exe")
            WRITEINI("設定","Chromeパス","C:\Program Files\Google\google chrome\chrome.exe")

            WRITEINI("SET","Position","1,260")
            WRITEINI("SET","StopHotKey","2,2")
            WRITEINI("SET","LogLines","2000")
            WRITEINI("SET","DefaultFont","")
            RESULT=""
      ELSE
//         読み込んで欲しい設定値をp[]に代入しておく
            DIM p[2]//最大要素番号は必要な値に書き換える
            p[0]=READINI("設定","DOS窓パス")
            p[1]=READINI("設定","Firefoxパス")
            p[2]=READINI("設定","Chromeパス")
            RESULT=SLICE(p,0,LENGTH(p)-1)
      ENDIF
FEND
関数プログラム説明
1,23行目 1
23
FUNCTION iniprep()
FEND
iniprep()関数宣言:初回起動時はiniファイルを作る、そうでなければ設定値を読み込む関数
2行目 2             tmp=READINI(メモ,自分専用の.iniファイルだよ)
iniファイルから”メモ”セクションと”自分専用の.iniファイルだよ”キーの内容を読み込む。
3,15,22行目 3
15
22
      IF tmp=
      ELSE
      ENDIF
“メモ”セクションと”自分専用の.iniファイルだよ”キーがあったかどうかで条件分岐します。無かった場合は変数tmpには””(空白)が代入されています。
(無かった=初回起動だった)⇒ 4~14行目へ
(あった=初回起動ではなかった)⇒ 17~21行目へ
4~14行目 4
5
6
7
8
9
10
11
12
13
14
            WRITEINI(メモ,自分専用の.iniファイルだよ,1)

            WRITEINI(設定,DOS窓パス,C:\WINDOWS\system32\cmd.exe)
            WRITEINI(設定,Firefoxパス,C:\Program Files\Mozilla Firefox\firefox.exe)
            WRITEINI(設定,Chromeパス,C:\Program Files\Google\google chrome\chrome.exe)

            WRITEINI(SET,Position,1,260)
            WRITEINI(SET,StopHotKey,2,2)
            WRITEINI(SET,LogLines,2000)
            WRITEINI(SET,DefaultFont,)
            RESULT=

(初回起動だった)
次回の起動時のために”メモ”セクション”自分専用の.iniファイルだよ”キーに”1″と書き込みます。その他、必要な設定値を書き込みます。(例として、上記コードの内容を書きました。)
関数の戻り値として””(空白)を返します。
17~21行目 17
18
19
20
21
            DIM p[2]//最大要素番号は必要な値に書き換える
            p[0]=READINI(設定,DOS窓パス)
            p[1]=READINI(設定,Firefoxパス)
            p[2]=READINI(設定,Chromeパス)
            RESULT=SLICE(p,0,LENGTH(p)1)
(初回起動ではなかった)
各設定値を配列p[]に代入します。
最後に21行目で配列を関数の戻り値として返します。
※配列変数を返す関数の使い方はこちら(配列変数と関数【使い方まとめ】)。

iniファイルを扱う関数の呼び出しとできあがる情報

呼び出し側は、

ini=iniprep()
ini[0]には“設定”セクションの“DOS窓パス”キーに書いてあるデータ
ini[1]には“設定”セクションの“Firefoxパス”キーに書いてあるデータ
ini[2]には“設定”セクションの“Chromeパス”キーに書いてあるデータ

がそれぞれ代入されます。

また、上の関数を呼び出したときに出来上がるiniファイルは、下のようになります。

//出来上がったiniファイルの中身
[メモ]
自分専用の.iniファイルだよ=1
[設定]
DOS窓パス=C:\WINDOWS\system32\cmd.exe
Firefoxパス=C:\Program Files\Mozilla Firefox\firefox.exe
Chromeパス=C:\Program Files\Google\google chrome\chrome.exe
[SET]
Position=1,260
StopHotKey=2,2
LogLines=2000
DefaultFont=

上の関数ではp[0~2]のみ定義しましたが、カスタマイズして必要な設定分準備しておけば配列変数に入れて返します。呼び出し側は一行だけで配列ini[]に全部代入してくれます。

ファイル操作の話題
ファイル操作の関数 iniファイルを扱う関数 現在のタイムスタンプ文字列を返す関数 高圧縮jpegと非劣化bmp画像を取得する関数
本記事の内容は以下でした。
○iniファイルを扱う関数

コメント

タイトルとURLをコピーしました