' iniobject のテスト・プログラム ' 著作 Richard D. Clark ' 共有著作物 '======================================================================== 'inifile オブジェクトを含めます #Include Once "inifile.bi" 'ファイル名前空間を設定します Using inifobj '作業文字列リスト(stringlist)を作成します Dim myList As stringlist Dim As Integer Index, ret Dim As String sret '新しい inifile オブジェクトを作成します Dim myIni As iniobj = iniobj("test.ini") If myIni.InitStatus = FALSE Then Print "ini オブジェクト初期化エラー" Sleep End EndIf myIni.WriteString "Section 1", "item1", "This is a new string." myIni.WriteString "Section 1", "item2", "This is another string." ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf Print Print "Section 1" sret = myIni.ReadString("section 1", "item1", "No Value") Print "Return String = "; sret Print 'セクション名を見つける If myIni.SectionExists("section 1", index) = TRUE Then Print myIni.Strings(index) EndIf If myIni.KeyExists("section 1", "item1", index) = TRUE Then Print myIni.Strings(index) EndIf Print myIni.WriteString "Section 2", "item1", "This is another string." ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf Print Print "Section 2" sret = myIni.ReadString("section 2", "item1", "No Value") Print "Return String = "; sret myIni.WriteString "Section 2", "item1", "Updated string." ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf Print Print "Section 2" sret = myIni.ReadString("section 2", "item1", "No Value") Print "Return String = "; sret Print '全てのセクションを取得 Print "Reading all section names." myIni.GetSections(myList) For index = 0 To myList.count - 1 Print myList.Strings(index) Next Print 'セクションからキーを削除 ret = myIni.DeleteKey("section 2", "item1") If ret = TRUE Then Print "section 2 から item1 キーを削除" EndIf ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf Print Print "Section 2" sret = myIni.ReadString("section 2", "item1", "No Value") Print "Return String = "; sret Print 'セクションを削除 ret = myIni.DeleteSection("section 2") If ret = TRUE Then Print "section 2 を削除" EndIf ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf Print Print "Section 2 " sret = myIni.ReadString("section 2", "item1", "No Value") Print "Return String = "; sret Print '"section 1" からすべてのキーを取得します myIni.GetSectionKeys "section 1", myList Print "Section 1 Keys" For index = 0 To myList.count - 1 Print myList.Strings(index) Next Print '"section 1" からすべてのキー/値 を取得します myIni.GetSectionKeyValues "section 1", myList Print "Section 1 Key/Values" For index = 0 To myList.count - 1 Print myList.Strings(index) Next Sleep
Ini ファイル・オブジェクト バージョン 0.1 Richard D. Clark ini ファイルオブジェクトは、FreeBasic プログラムのために iniファイルを作成して、管理します。 オブジェクトを使うために、あなたのプロジェクトに #Include Once "inifile.bi" を追加してください。 オブジェクトは、iniファイルの内容を管理するために、StringList オブジェクトを使います。 iniファイル・オブジェクトは、文字列値を、読み書きするだけです。 それで、iniファイルに保存する前に、どんな数値も、文字列に変換する必要があります。 セクションとキー名は、大文字と小文字を区別しません。 iniファイルオブジェクトは、各値のディスク書き込みを避けるために、メモリ内の iniファイルを操作します。 ディスク上の iniファイルを更新するには、ディスクファイルに変更を保存する UpdateFile 関数を呼び出してください。 Ini ファイル形式 [SECTION 1] ITEM2=This is another string. ITEM1=This is a new string. [SECTION 2] ITEM1=Yet another string. ファイルの中のセクション名は、そのまわりを [ ] 文字で囲まれています。 しかし、セクションにアクセスするときは [ ] 文字を使いません。 つまり、[SECTION 1] は、“Section 1”として呼ばれます。 セクション・キーは、= 文字の前の値です。そして、キーのデータは = 文字の後の値です。 キーの値にアクセスするために、セクション名とキーの名前の両方を渡す必要があります。 たとえば、“This is a new string.” を返すためには、 セクションの“Section 1”と、キーの“Item1”でReadString を呼びます。 必要なファイル inifile.bi stringlist.bi インタフェース 定数 #Define FALSE 0 #Define TRUE (Not FALSE) 構築子宣言 (inifile As String) オブジェクト構築子。オブジェクトを作成すると、構築子にファイル名を渡します。 ファイルが存在すると、ファイルは内部の StringList にロードされます。 例: Dim myIni As iniobj = iniobj("test.ini") プロパティ Version () を文字列として宣言 文字列として iniobject の現バージョンを返します。 例: Print myIni.Version プロパティ InitStatus () を整数として宣言 オブジェクトが、適切に初期化されると TRUE を、そうでないと FALSE を返します。 例: If myIni.InitStatus = FALSE Then Print "オブジェクト初期化エラー" Sleep End EndIf プロパティ IniFileName () を文字列として宣言 文字列として iniファイル名を返します。 例: myFile = myIni.IniFileName プロパティ IniFileExists () を整数として宣言 iniファイルが存在すると TRUE を、そうでないと FALSE を返します。 例: ret = myIni.IniFileExists プロパティ Count() を整数として宣言 iniファイルの行数を返します。 例: cnt = myIni.Count 関数 Strings(index As Integer) を文字列として宣言 内部の StringList に、インデックス位置の文字列を返します。 例: Print myList.Strings(index) 関数 SectionExists (section As String, ByRef index As Integer) を整数として宣言 セクション名が存在すると TRUE そうでないと False を返します。 セクションは、 [ ] 文字なしで渡されます。 セクションのインデックスは、見つかればインデックスパラメータに返されます。 例: If myIni.SectionExists("section 1", index) = TRUE Then Print myIni.Strings(index) EndIf 関数 KeyExists (section As String, skey As String, ByRef index As Integer) を整数として宣言 セクションにキーが存在すると TRUE を、そうでないと FALSE を返します。 セクションは、[ ] 文字なしで渡します。 キーは、iniファイルの = 記号の前の値です。 キーが見つかると、キーのインデックスは、インデックス内に戻されます。 例: If myIni.KeyExists("section 1", "item1", index) = TRUE Then Print myIni.Strings(index) EndIf 関数 ReadString (section As String, skey As String, default As String) を文字列として宣言 セクション内の文字列で、skey に位置する値を返します。 これは、= の後の値です。 セクション、キー、値が見つからないと、デフォルト値が返されます。 例: sret = myIni.ReadString("section 2", "item1", "No Value") Print "Return String = "; sret 関数 UpdateFile() を整数として宣言 現在のiniファイルデータで、ディスクファイルを更新します。 成功した場合は TRUE を、エラーが発生した場合は FALSE を返します。 iniファイルへのすべての変更はメモリ内で発生し、 UpdateFile 関数が呼び出されるまでディスクに書き込まれません。 例: ret = myIni.UpdateFile() If ret = FALSE Then Print "ファイル更新できません" Else Print "ファイル更新しました" EndIf 関数 DeleteSection(section As String) を整数として宣言 セクションと、セクションに関連付けられたすべての キー/値 を削除します。 成功すれば TRUE を、エラーが発生すると FALSE を返します。 例: ret = myIni.DeleteSection("section 2") If ret = TRUE Then Print "section 2 を削除" EndIf 関数 DeleteKey(section As String, skey As String) を整数として宣言 セクションの キー/値 を削除します。 成功すると TRUE を、エラーが発生すると FALSE を返します。 例: ret = myIni.DeleteKey("section 2", "item1") If ret = TRUE Then Print "section 2 から item1 キーを削除" EndIf Sub WriteString (section As String, skey As String, value As String) を宣言 セクション内およびキーに、文字列の値を書き込みます。 セクションまたはキーが存在しないと、それらを作成します。 例: myIni.WriteString "Section 1", "item1", "This is a new string." Sub GetSections (ByRef slist As stringlist) を宣言 渡された stringlist 内のすべてのセクション名を返します。 セクションがなにも見つからないと、stringlist のカウントは 0 になります。 例: myIni.GetSections(myList) For index = 0 To myList.count - 1 Print myList.Strings(index) Next Sub GetSectionKeys (section As String, ByRef slist As stringlist) を宣言 渡された文字列リスト内の、セクション内の、すべてのキー名を返します。 セクションが見つからないか、セクションがキー名を何も含まない場合は、stringlist のカウントは 0 になります。 例: myIni.GetSectionKeys "section 1", myList For index = 0 To myList.count - 1 Print myList.Strings(index) Next Sub GetSectionKeyValues (section As String, ByRef slist As stringlist) を宣言 渡された stringlist のセクション内の、すべての キー/値 を返します。 たとえば、ITEM1=This is a new string. セクションが見つからないか、セクションに何もキー名が含まれない場合は、stringlist カウントが 0 になります。 例: myIni.GetSectionKeyValues "section 1", myList For index = 0 To myList.count - 1 Print myList.Strings(index) Next