dポイントプレゼントキャンペーン実施中!

.netでのiniファイル読込がうまくいきません。
何が悪いのかさっぱりわかりません。
ご指摘お願いいたします。

環境
os :xp 開発ソフト VB.NET ver 1.1.4322 SP1

ソース

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

'実行ファイルパスの取得 *VB6のapp.path
Shared Function GetAppPath() As String
Return System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().Location)
End Function


Function INI_DBPATH_READ(ByVal FilePath As String) As String
Dim lngRet As Long
  '読み込みバッファ(固定長)
Dim strGetBuff As String = 256
  'iniファイルより読み込む文字列のサイズ
Dim intGetSize As Integer
  'セクション名
Dim strSection As String
  'キー名
Dim strKey As String
  '読み込みエラー時の出力文字列
Dim strErr As String
  'iniファイル名(フルパス)
Dim striniFn As String

strGetBuff = Space(256)

strSection = "TIFF_FOLDER"
strKey = "PATH"
strErr = "失敗"
striniFn = Replace(GetAppPath(), "\bin", "\Ini") & "\test.ini"

intGetSize = 256

'strGetBuffに文字列を取得する
lngRet = GetPrivateProfileString(strSection, strKey, strErr, _
strGetBuff, intGetSize, striniFn)

'末尾のNull除去
MsgBox(Microsoft.VisualBasic.Left(strGetBuff, InStr(strGetBuff, Chr(0)) - 1))

End Function

iniファイルの内容
[TIFF_FOLDER]
PATH=成功

A 回答 (2件)

vb6時代コードそのまんまになってるのが原因みたいです。


例えばLong型で宣言されている部分は.NETではIntegerになります。
その他数箇所手を入れました。

まずAPI部分

Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As System.Text.StringBuilder, _
ByVal nSize As Integer, _
ByVal lpFileName As String) As Integer

つづいて
INI_DBPATH_READ部分

Sub INI_DBPATH_READ(ByVal FilePath As String)
Dim lngRet As Long
'読み込みバッファ(固定長Stringというのは.NETではナイ)
Dim strGetBuff As New System.Text.StringBuilder
strGetBuff.Capacity = 256
'iniファイルより読み込む文字列のサイズ
Dim intGetSize As Integer
'セクション名
Dim strSection As String
'キー名
Dim strKey As String
'読み込みエラー時の出力文字列
Dim strErr As String
'iniファイル名(フルパス)
Dim striniFn As String

strSection = "TIFF_FOLDER"
strKey = "PATH"
strErr = "失敗"
striniFn = Replace(GetAppPath(), "\bin", "\Ini") & "\test.ini"

'strGetBuffに文字列を取得する
lngRet = GetPrivateProfileString(strSection, strKey, strErr, _
strGetBuff, strGetBuff.Capacity, striniFn)

MsgBox(strGetBuff.ToString)

End Sub
これでうまくいくと思います。
    • good
    • 0
この回答へのお礼

おおお!イケました。
固定長の部分が間違っていたのですね

ありがとうございます!!

お礼日時:2007/08/03 17:21

どこでエラーになりますか?


iniファイルの設置場所は間違っていませんか?

この回答への補足

エラーと言うか、strErrの"失敗"が出力されます。
読み込めなかったと言う事ですよね。

ファイルの場所はapp.pathのiniフォルダなので間違いないと思うのですが…

私のソースで"成功"が出力されるはずなのですが、"失敗"なんです。

補足日時:2007/08/03 15:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています