DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Win32 API に対するデータ型の調整

環境/言語:[Win2000、VB.net]
分類:[.NET]

'宣言
'Windowsプロファイル入出力 (Win32API)
Private Declare Function GetPrivateProfileStringKey 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

'ソース部

Public Sub subGetIniData()

Dim l_strPath As String 'Iniファイルパス
Dim l_strGetIndexInfo(g_iniDataCnt) As String 'Iniファイル取得用

l_strPath = VB6.GetPath & "\ini\SystemIni.ini"

l_strGetIndexInfo(1) = fncGetIniString("Address", "Host", l_strPath) 'ActiveHost
l_strGetIndexInfo(2) = fncGetIniString("Address", "Port", l_strPath) 'ActivePort

End Sub

Public Function fncGetIniString(ByRef Section As String, ByRef Keyname As String, ByRef FileName As String) As String

Dim Default_Renamed As String
Dim StrRet As String
Dim StrRetLen As Integer

Default_Renamed = ""
StrRet = ""
StrRet = Space(200)
StrRetLen = Len(StrRet)

StrRetLen = GetPrivateProfileStringKey(Section, Keyname, Default_Renamed, StrRet, StrRetLen, FileName)

If Mid(StrRet, 1, 1) = vbNullChar Then
StrRet = ""
End if

End Function


上記そーすを通すと、iniファイルのパス名がうまくとれないのです。

l_strPathには、ちゃんとフルパスの\ini\SystemIni.iniファイルが入ってくれるのですが、
それを、fncGetIniStringの引数として渡して、fncGetIniStringの中に入った状態では、
FileNameに正常に入っているのですが、
StrRetLen = GetPrivateProfileStringKey(Section, Keyname, Default_Renamed, StrRet, StrRetLen, FileName)
この1行を通すと、FileNameの値がフルパスの\ini\Sとなってしまいます。

すみませんが、どなたかご教授お願いします。

■■■■■■■
ちなみに
iniファイル
[Address]
;ポート番号(4000)
Port=4000
host = 10.100.10.10
■■■■■■■
すみません、挨拶せずにそのまま文を打ってしまいました。

よろしくおねがいします。
> Private Declare Function GetPrivateProfileStringKey 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

 この宣言は‥‥もしかして↓を参考にされたものでしょうか? この宣言には誤りがあります。
#Microsoft サイトにあるサンプルが必ずしも正しいとは限らないので‥‥。

アップグレードに関する推奨事項 : Win32 API に対するデータ型の調整
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Vbcon/html/vbconupgraderecommendationadjustdatatypesforwin32apis.asp


 よねKENさんのサイトに解り易い記事がありますので、そちらを参考にされると良いでしょう。

[特集6] GetPrivateProfileStringにみるAPIの使用方法
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp06_GetPrivateProfileString.html

DOBON.NET | プログラミング道 | プログラミング掲示板