GetPrivateProfileString()で


もとお  2004-02-10 12:53:56  No: 81920  IP: [192.*.*.*]

はじめまして、VB初心者のもとおといいます。
GetPrivateProfileString()で
可変なiniファイルの文字列を読み込む時には、
バッファのサイズをどうしたらよいでしょうか。

編集 削除
魔界の仮面弁士  2004-02-10 13:04:36  No: 81921  IP: [192.*.*.*]

とりあえず、適当なサイズのバッファを用意して読み込んでみて、
バッファ一杯まで読み込まれているようであれば、あらためて
バッファサイズを増やして読み直してみては如何でしょう。

編集 削除
もとお  2004-02-10 13:15:48  No: 81922  IP: [192.*.*.*]

魔界の仮面弁士さん、早い返答ありがとうございます。
バッファがいっぱいまで読み込まれているのを判定するにはどうしたらいうことでしょう。
それとあらためて増やすというのはどういうことでしょうか。。。
お手数おかけしてすいません。

編集 削除
へいぽ?  2004-02-10 15:00:22  No: 81923  IP: [192.*.*.*]

> バッファがいっぱいまで読み込まれているのを判定

GetPrivateProfileString で String 型の変数に読み込んだ場合、
<String 型の変数> = <読み込んだ文字列> & vbNullChar
となります。
String 型の変数のサイズが小さい場合
<String 型の変数> = <読み込んだ文字列の先頭XXバイト>
のようになり、 vbNullChar は含まれません。

それなので、次のような感じですね。

  Dim s As String
  Dim i As Integer
  Dim l As Long
  i = 0
  Do
    i = i + 1
    s = Space(256 * i)
    l = GetPrivateProfileString(....., s, .....)
    If InStr(1, s, vbNullChar) > 0 Then
      s = Mid(s, 1, InStr(1, s, vbNullChar) - 1)
      Debug.Print s
      Exit Do
    End If
  Loop

編集 削除
もとお  2004-02-10 17:48:09  No: 81924  IP: [192.*.*.*]

へいぽ?さん、ご丁寧にありがとうございます。
へいぽ?さんに書いていただいたソースの「s」を
GetPrivateProfileStringの引数の中に入れる時には
どこにいれたらいいのでしょう。

編集 削除