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

UWSCという開発ソフトを使って作り上げる作業を実際にやってみるカテゴリ。準備した自作関数や使い方、トラブルを記事にしていきます。得るものがあれば幸いです。
今回は、初期設定に使用するiniファイルを扱う関数を作りました。

記事の内容
○iniファイルを扱う関数

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

UWSCには標準でiniファイルの読み書きを行う関数が用意されています。さっと使えるように、初めて起動した場合にはiniファイルを作る、そうでなければ設定値を読み込むという関数を作っておきます。

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

仕様は、「初回起動時にはiniファイルを作る、そうでなければ設定値を読み込む」。
また、iniファイルは作るソフト毎に異なると思いますので、その度に作り直しする必要があります。(常にインクルードされるファイルではなく、目的のソフトのソースファイルにのみ記述しておくべき。)

iniprep()関数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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=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ファイルを扱う関数

コメント

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