プログラムの中で動作環境に依存した設定(データベース、フォルダ、ファイル...など)ってありませんか?
プログラムにそれらをコーディングすると、変更のたびにソースコードを変更する必要がありますよね!
そこで、昔からある方法で
・設定ファイル(INIファイル)に動作環境を宣言
・起動時に動作環境をプログラム内の変数に代入
をすることによってソースコードは変更することなく動作を設定できます
この部屋では、INIファイルを読み込むファンクションの宣言、INIファイルの書き方、起動時の読込ー>取得方法を案内してます
使ってみてね!!!結構便利ですよ!
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください
INIファイルを読み込むファンクションの宣言
プロジェクトにモジュールを追加します
・「メニュー」ー「プロジェクト」ー「モジュールの追加」を選択
※名前は何でもいいけど、Kappoは昔から「共通で宣言するソース」として ’Declear’ という名前を
使ってるます・・・意味は何だったか昔だから覚えていないです笑
GetPrivateProfileString・・・設定ファイルを読み込む時に呼び出すファンクション
WritePrivateProfileString・・・設定ファイルに書き込む時に呼び出すファンクション
▼プログラム▼
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
<System.Runtime.InteropServices.DllImport("KERNEL32.DLL")>
Public Function GetPrivateProfileString(
ByVal lpAppName As String,
ByVal lpKeyName As String,
ByVal lpDefault As String,
ByVal lpReturnedString As System.Text.StringBuilder,
ByVal nSize As Integer,
ByVal lpFileName As String
) As Integer
End Function
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
<System.Runtime.InteropServices.DllImport("KERNEL32.DLL")>
Public Function WritePrivateProfileString(
ByVal lpAppName As String,
ByVal lpKeyName As String,
ByVal lpString As String,
ByVal lpFileName As String) As Integer
End Function
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
書き込むファンクションも記述していますが、Kappoは今まで数回しか使ったことがなく
使い方を忘れてしまいましたぁ笑・・・思い出したらこの部屋で案内しますね!
設定ファイル(INIファイル)の書き方
ファイル名:アプリケーション名+”.ini”
記述例:データベース関係の情報
[DATA]
DBPATH=C:\Smple
DBNAME=Sample.accdb
TBLNAME=tblData
;
■要素の説明■
[DATA] === セクション名:表札みたいなもの
DBPATH、DBNAME、TBLNAME === キー:値の位置
C:\Smple、Sample.accdb、tblData === 値
; === コメント行
※セクション名を工夫すると、機能別に記述ー>読込取得することが出来ますよ!
設定ファイル(INIファイル)を読み込むプログラム
Kappoは、プログラム起動時によくある「スプラッシュスクリーン」を追加して使用しているよ!
プログラムにコンポーネントを追加します
・「メニュー」ー「プロジェクト」ー「コンポーネントの追加」を選択
※名前はとりあえずデフォルトでいいかな・・・
自動で作成されるサブルーチン
Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
の、下記コードの下に追加
’著作権情報
Copyright.Text = My.Application.Info.Copyright
読み込む情報はデータベース関係のもの(格納変数は上述で追加したDeclear内に追加)
データベースが保存されているパス、データベース名、使用するテーブル名
’ INIファイル情報
Public DbPath As String ‘データベースパス
Public DbName As String ‘データベース名
Public tblName As String ‘テーブル名
▼プログラム▼
(例)読み込む設定ファイル(INIファイル)名
「アプリケーションが起動するフォルダ}+「アプリケーション名のファイル」
'----------------------------------------
Dim MyPath As String = Application.StartupPath
Dim myFName As String
Dim myFTitle As String
Dim buf
Dim bNo As Integer
Dim iniFName As String
'----------------------------------------
'起動アプリケーションファイル名からアプリケーションファイル名(拡張子含む)を取得
buf = Split(Application.ExecutablePath, "\")
bNo = UBound(buf)
myFName = buf(bNo)
'------------------------------
'アプリケーションファイル名(拡張子含む)から拡張子を除く
buf = Split(myFName, ".")
myFTitle = buf(0)
'------------------------------
'アプリケーション起動フォルダ名の最後に’¥’をつける
If MyPath.EndsWith("\") = False Then
MyPath &= "\"
End If
'------------------------------
'INIファイル名
iniFName = MyPath & myFTitle & ".ini"
設定ファイルを読み込むところ
'----------------------------------------
Dim strSb As System.Text.StringBuilder 'StringBuilderクラス
'----------------------------------------
' [DATA]セクションから必要情報を取得
'------------------------------
'バッファーサイズを1024文字を割り当てる(かなり大き目)
strSb = New System.Text.StringBuilder(1024)
'------------------------------
'INIファイル内からデータベースパスを取得
GetPrivateProfileString("DATA", "DBPATH", "default", strSb, 255, iniFName)
DbPath = strSb.ToString 'データベースパス
'------------------------------
'INIファイル内からデータベース名を取得
GetPrivateProfileString("DATA", "DBNAME", "default", strSb, 255, iniFName)
DbName = strSb.ToString 'データベース名
'------------------------------
'INIファイル内からテーブル名を取得
GetPrivateProfileString("DATA", "TBLNAME", "default", strSb, 255, iniFName)
tblName = strSb.ToString 'テーブル名
'------------------------------
'後片付け
strSb = Nothing
'----------------------------------------
記述:GetPrivateProfileString(“DATA”, “DBPATH”, “default”, strSb, 255, iniFName)
| | | | | ↓
| | | | ↓ 設定ファイル名
| | | ↓ 読込む文字数
↓ ↓ ↓ 読込んだ値の格納場所
セクション名 キー 値固定(内容は覚えていない=おまじない)
プログラムの実行
プログラムを実行すると
変数 DbPath = ”C:\Sample”
変数 DbPath = ”Sample.accdb”
変数 DbPath = ”tblData”
が代入されました
▼Debug.print で出力した表示▼
コメント