none
VB6でのiniファイルからの読み込み RRS feed

  • 質問

  • VB6でiniファイルから値を読み取る処理を作ったのですが、値がうまく取れません。

    iniファイル名、キー名、セクション名に間違いはないのですが、

    GetPrivateProfileString関数の戻り値は0で、読み込んだ文字列は""になります。

    ためしにiniファイルを削除してみたりしてみたのですが、それでも同じ結果で、エラーも発生しません。

    なにか環境設定に問題があるのでしょうか?

    OSはWinXP SP3です。

    よろしくお願いいたします。

    2011年12月12日 7:17

回答

  • バッファサイズが指定されていないからだと思います。例えば以下のようにしてみて下さい。

    Dim str As String * 255

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク cozycone 2011年12月13日 0:57
    2011年12月13日 0:52
    モデレータ

すべての返信

  • できる限り小さな、再現できるコードを提示できますか?
    (Declare 文と呼び出し前後を含めてご提示ください)
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年12月12日 14:20
    モデレータ
  • Azulean様

    返信ありがとうございます。

    下記がテスト用に作ったコードで、実際にうまくいかないものです。

    指定したiniファイルがあってもなくても、キーやセクション名が合っていてもいなくても同じ結果で

    戻り値0で、取得文字列は””です。

    よろしくお願いいたします。

    Private Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" _
    (ByVal lpAppName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

    Private Sub Command1_Click()

    Dim str As String
    Dim result As Long

    result = GetPrivateProfileString("Section", "Key", "err", str, Len(str), "c:\test.ini")

    MsgBox result & str

    End Sub

    2011年12月13日 0:01
  • バッファサイズが指定されていないからだと思います。例えば以下のようにしてみて下さい。

    Dim str As String * 255

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク cozycone 2011年12月13日 0:57
    2011年12月13日 0:52
    モデレータ
  • trapemiya様

    返信ありがとうございます。

    うまくいきました。

    ご指摘いただいたとおりでした。

    こんな単純なことなんですね。

     

    ありがとうございました。

    2011年12月13日 0:57