ユーザーの使用を容易にし、システムを柔軟にするために、ほとんどの Windows アプリケーションは、ユーザーによる選択とさまざまな変更されたシステム情報を初期化 (INI) ファイルに記録します。したがって、システム環境が変化した場合、プログラムを変更することなく、INI ファイルを直接変更できます。 INI ファイルがシステム機能にとって重要であることがわかります。この記事では、Visual Basic for Windows (以下、VB) を使用して Windows アプリケーションを開発する際の、INI ファイルの読み書き方法を紹介します。
INI ファイルは、複数のセクションで構成されるテキスト ファイルです。括弧で囲まれた各タイトルの下に、単一の単語と等号で始まる複数のキーワード (キーワード) があり、それぞれのアプリケーションの特定の側面を制御します。関数の等号の右側の値は、キーワードの動作モードを指定します。その一般的な形式は次のとおりです。
[セクション1]
キーワード1=値
キーワード2=値2
…
[セクション2]
キーワード1=値1
キーワード2=値2
…
このうち、等号の右側に何もない(つまり値が空)場合は、キーワード(またはその一部)が Windows アプリケーションによってデフォルト値として指定されていることを意味します。ファイル全体で見つからないということは、それらにデフォルト値が指定されていることも意味します。各部分の出現順序は、各部分内のキーワードの順序と同様に無関係です。
INI ファイルの読み取りと書き込みには通常 2 つの方法があります。1 つは Windows の「メモ帳」を使用して編集する方法で、これは比較的簡単でこれ以上の説明は必要ありません。もう 1 つは Windows アプリケーションで INI ファイルを読み取り、書き込みます。アプリケーションの実行 INI ファイル内の情報は、アプリケーションの終了時に読み取られ、ユーザーが実行環境に対して行った特定の変更は、アプリケーションの終了時に保存されます。
キーワードの値のタイプはほとんどが文字列または整数であり、2 つの状況で読み書きする必要があります。プログラムを保守しやすく移植可能にするには、INI ファイルの読み取りと書き込みをモジュール (RWINI.BAS) にカプセル化し、GetIniS 関数と GetIniN 関数、および SetIniS 関数と SetIniN 関数を RWI-NI.BAS に構築するのが最善です。 . 処理では、これらの関数および処理で Windows API の「GetPRivateprofileString」「GetPrivateProfileInt」「WritePrivateProfileString」関数を使用する必要があります。
RWINI.BAS モジュールのプログラム コードは次のとおりです。
General-Declaration セクションで使用される Windows API 関数を宣言します。
DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeclareFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunctionGetIniS(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefStringAsString)AsString
DimResultStringAsString*144、TempAsInteger
DimsAsString、iAsInteger
Temp=GetPrivateProfileString(セクション名,キーワード,"",結果文字列,144,アプリプロファイル名())
'キーワードの値を取得します
IfTemp>0Then'キーワード値が空ではありません
s=""
フォーリ=1To144
IfAsc(Mid$(ResultString,I,1))=0Then
終了用
それ以外
s=s&Mid$(ResultString, I, 1)
EndIf
次
それ以外
Temp=WritePrivateProfilesString(セクション名,KeyWord,DefString,ppProfileName())
'デフォルト値をINIファイルに書き込む
s=DefString
EndIf
GetIniS=s
エンドファンクション
FunctionGetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefValue
AsIneger)AsInteger
DimdAsLong,sAsString
d=デフォルト値
GetIniN=GetPrivateProfileInt(セクション名,
キーワード、DefValue、ppProfileName())
Ifd<>DefValueThen
s=""&d
d=WritePrivateProfileString(セクション名,
キーワード、s、AppProfileName())
EndIf
エンドファンクション
SubSetIniS(ByValSectionNameAsString, BtVaKeyWordAsString, ByValValStr
文字列として)
ディムレス
res=WritePrivateprofileString(セクション名,キーワード,ValStr,アプリプロファイル名())
EndSub
SubSetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValValInt
整数として)
ディムレス、s$
s$=Str$(ValInt)
res=WriteprivateProfileString(セクション名,キーワード,s$,アプリプロファイル名())
EndSub
SectionName は各セクションのタイトル、KeyWord はキーワード、GetIniS と GetIniN の DefValue はキーワードのデフォルト値、SetIniS と SetIniN の ValStr と ValInt は INI ファイルに書き込まれるキーワードの値です。上記の関数と手順の使用方法をよりわかりやすく説明するために、以下に 2 つの例を示します。
例 1:
アプリケーションの開発では通常、データベースやその他のファイルを使用する必要があります。これらのファイルのディレクトリ (パスとファイル名を含む) はプログラム内で固定されるべきではなく、プログラムの実行時に INI ファイルから読み取られる INI ファイルに保存されます。走っている。データベース ファイルを読み取るコードは次のとおりです。
Dimデータベース名AsString
データベース名=GetIniS("データベース", "従業員", "")
IfDatabaseName=""ThenDatabaseName=InputBox("データベース「従業員」のディレクトリを入力してください),
App.Title)」は、「ファイルダイアログ」からも選択できます。
エラー発生時再開次へ
Setdb=OpenDatabas(データベース名)
IfErr<>0Then
MsgBox "データベースを開けませんでした!"、MB-
ICONSTOP、App.Title:GotoErrorProcessing
それ以外
SetIniS"データベース","従業員",データベース名
EndIf
OnErrorGoTo0
…
例 2:
ユーザーの操作を容易にするために、ウィンドウの高さや幅など、ユーザー インターフェイスの特定の情報を保存する必要がある場合があります。フォームをロードするときに、フォームの高さと幅を INI ファイルから読み取ります。 フォームをアンロードするときに、フォームの現在の高さと幅を INI ファイルに保存します。 コードは次のとおりです。
サブフォーム1_Load()
…
Forml.Height=GetIniN("フォーム 1", "高さ", 6000)
Form1.Width=GetIniN("フォーム1","高さ",4500)
EndSub
…
SubForm1_Unload()
…
SetIniN"フォーム 1","高さ",Me.Height
SetIniN"Form1,"Width",Me.Width
…
EndSub->