VB.netでINIファイルから文字列を取得するには?

解決


Help  2005-03-16 16:26:22  No: 88878  IP: [192.*.*.*]

VB.netでINIファイルから文字列を取得するにはどうすればよろしいでしょうか?
過去の履歴を見ても理解できません
出来れば、サンプルソースなどを掲載していただけますとありがたいのですが………………

編集 削除
ささ  2005-03-16 18:03:39  No: 88879  IP: [192.*.*.*]

過去ログに、サンプルソースがあって、
それを見ても理解できないとなると、
どうやって回答すればいいのでしょうか?

教えてください。

編集 削除
Help  2005-03-16 18:19:45  No: 88880  IP: [192.*.*.*]

たとえば、
Public Function GetIni(ByVal section As String, ByVal Key As String,  ByVal DefaultString As String) As String

とありますが、呼び出し元はどのようにすればよいのですか?

Call GetIni(ここの値がわかりません)

よろしくお願いします

編集 削除
じゃんぬねっと  URL  2005-03-16 18:27:10  No: 88881  IP: [192.*.*.*]

# VB.NET では、INI ではなく、XML を推奨しているんですけどね...

> Call GetIni(ここの値がわかりません)

セクション名、キー名、デフォルト値の概念もわからないようでは、厳しいのでは?

ちなみに、API を使いたくないのならば。
http://jeanne.wankuma.com/library/

編集 削除
Help  2005-03-16 19:34:34  No: 88882  IP: [192.*.*.*]

サンプルソースを参考に、動かしてみましたがデフォルト値しかよんでくれません。
ソースは下記のとおりです。

Dim strFullPath As String
        Dim strININame As String
        Dim Ret As Long                 '戻り値
        Dim strTemp As String           '一時格納変数
        Dim intLen As Long              '文字列長

        Dim linebuf As String
        linebuf = New String(CChar(" "), 256)
        Dim buf As String
        buf = New String(CChar(" "), 256)
        Dim INI_DBPATH_READ As String

        'INIファイル名取得
        'iniファイルのファイル名作成
        strININame = System.IO.Path.Combine(PUB_AppPath, PUB_ExeName & ".ini")

        'バッファを確保
        strTemp = ""
        strTemp = strTemp.PadLeft(1024, Chr(0))
        intLen = Len(strTemp)

        Ret = GetPrivateProfileString(section, Key, DefaultString, _
           strTemp, intLen, strININame)
        
        If Ret > 0 Then
            buf = Microsoft.VisualBasic.Left(linebuf, InStr(linebuf, Chr(0)) - 1)
            INI_DBPATH_READ = buf
        End If
End Function

なにが問題なのでしょうか?

編集 削除
とおりすがり  2005-03-16 21:08:09  No: 88883  IP: [192.*.*.*]

>なにが問題なのでしょうか?
あなたの考える力が問題なんでしょう。

編集 削除
通りすがり  2005-03-16 22:28:58  No: 88884  IP: [192.*.*.*]

変数section、Key、DefaultStringの中身は何でしょうか?
また、変数linebufは
> linebuf = New String(CChar(" "), 256)
と設定しているので
> buf = Microsoft.VisualBasic.Left(linebuf, InStr(linebuf, Chr(0)) - 1)
としても意味がないのでは?

変数strTempも、GetPrivateProfileStringで取得した文字列が入っている
はずなのに、無視しているし・・・

普通なら
buf = Microsoft.VisualBasic.Left(strTemp, InStr(strTemp, Chr(0)) - 1)
として所得すると思うんだが・・・。

編集 削除
Help  2005-03-19 19:16:38  No: 88885  IP: [192.*.*.*]

みなさん
おさわがせしました。

編集 削除