iniファイルの全セクション、キー、値を取得するには?

解決


ころじ  2002-11-21 23:08:53  No: 76437

iniファイルの全セクション、全キー、全バリューを取得するには
どのようにしたら良いのでしょうか?


YuO  2002-11-22 02:47:29  No: 76438

GetPrivateProfileStrings APIで取得できます。
ただ,VBからは結構ややこしいかもしれません。


Say  2002-11-22 09:01:29  No: 76439

どうせiniファイルなんてただのテキストファイルですから、
FileSystemObjectあたりで一気読みするとか・・・。

なお、下のサンプルでは表示にListView使ってます。
Flex使おうと思ってたらちょうど初心者掲示板にListViewネタがあったもんで…。

Option Explicit

Private Sub Command1_Click()
    Dim fso As New Scripting.FileSystemObject
    Dim tso As Scripting.TextStream
    Dim strBuf As String
    Dim SectionBuf As String
    Dim itmX As ListItem
    Dim strKeyValue() As String
    Set tso = fso.OpenTextFile("c:\windows\win.ini", ForReading, False, TristateFalse)
    Do Until tso.AtEndOfStream
        strBuf = tso.ReadLine
        If strBuf <> "" Then
            If Left(strBuf, 1) = "[" Then
                SectionBuf = Mid(strBuf, 2, Len(strBuf) - 2)
            Else
                strKeyValue = Split(strBuf, "=")
                Set itmX = ListView1.ListItems.Add(, , SectionBuf)
                itmX.SubItems(1) = strKeyValue(0)
                itmX.SubItems(2) = strKeyValue(1)
            End If
        End If
    Loop
    tso.Close
    Set tso = Nothing
    Set fso = Nothing
    
    Set itmX = Nothing
    
End Sub

Private Sub Form_Load()
  
  With ListView1
    .Width = 8000
    .ColumnHeaders.Add , , "セクション", 2000
    .ColumnHeaders.Add , , "キー", 2000
    .ColumnHeaders.Add , , "バリュー", 4000
    .View = lvwReport
  End With
  
End Sub


Text.K  2002-11-24 08:29:42  No: 76440

YuOさんの言うとおりGetPrivateProfileStringsを使えばいいのでは?
split関数等で配列に分解処理をすれば問題なくVBでも利用できると思います。


ころじ  2002-11-28 01:32:00  No: 76441

YuOさん、Sayさん、Text.Kさん、ご返信ありがとうございます。
上記方法で試してみたいと思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加