名前のとおりですが、
iniファイルを読み込む方法を教えてください。
お願いします。
環境はVB.NETです。
GetPrivateProfileString API等を使ってみてください。
編集 削除見ても、さっぱりわかりません。
できれば、ソースを教えてください。
お願いします。
http://www.asahi-net.or.jp/~ef2o-inue/api/sub08_01_050.html
参考になるかわかりませんが^^;
エラーが出てしまい原因が分かりません。
教えてください。
お願いします。
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Integer, ByVal iniFilename As String) As Integer
Dim nFileName As String 'ファイル名称(フルパス)
Dim Ret As Integer '戻り値
Dim strTemp As String '一時格納変数
Dim intLen As Integer '文字列長
Public Function GetIni(ByVal section As String, ByVal Key As String, ByVal DefaultString As String) As String
'INIファイル名取得
'nFileName = GetAppPath()
With OpenFileDialog1
.FileName = ""
.Filter = "iniファイルの読み込み|*.ini"
.ShowDialog()
nFileName = .FileName
End With
'バッファを確保
strTemp = ""
strTemp = strTemp.PadLeft(1024, Chr(0))
intLen = Len(strTemp)
Ret = GetPrivateProfileString(section, Key, DefaultString, _
strTemp, intLen, nFileName)
Return Left(strTemp, InStr(strTemp, Chr(0)) - 1) '←ここでエラーが発生します。
End Function
Private Function GetAppPath() As String
Dim fi As New System.IO.FileInfo( _
System.Reflection.Assembly.GetExecutingAssembly.Location)
Return fi.DirectoryName
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GetIni(1, "aaa", "sss")
End Sub
================================================
iniファイルの中身
[aaa]
sss=実験
エラーって、構文エラーですよね?
それはVB6の構文なんでVB.NET風に書き換えてください。
たしかに構文エラーかも?
Leftでエラーが発生していた。
書き換え方が分かりません。
どうすればいいか教えてください。
お願いします。
できれば、書き換えてください。
お願いします。
教えるのは簡単ですが出来るだけ自分で考えてください。
難しいことはありません。
まずは『Left』の部分ををSubstringで処理してください。
とりあえずはそれで動きます。
とはいえ、おそらく期待通りの挙動をしないと思われるところがありますが……。
Leftをsubstrigに変えたのに、データが取得できないです。
どこが原因でしょうか?
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Integer, ByVal iniFilename As String) As Integer
Dim nFileName As String 'ファイル名称(フルパス)
Dim Ret As Integer '戻り値
Dim strTemp As String '一時格納変数
Dim intLen As Integer '文字列長
Public Function GetIni(ByVal section As String, ByVal Key As String, ByVal DefaultString As String) As String
'INIファイル名取得
'nFileName = GetAppPath()
With OpenFileDialog1
.FileName = ""
.Filter = "iniファイルの読み込み|*.ini"
.ShowDialog()
nFileName = .FileName
End With
'バッファを確保
strTemp = ""
strTemp = strTemp.PadLeft(1024, Chr(0))
intLen = Len(strTemp)
Ret = GetPrivateProfileString(section, Key, DefaultString, _
strTemp, intLen, nFileName)
Return strTemp.Substring(InStr(strTemp, Chr(0)) - 1)
End Function
Private Function GetAppPath() As String
Dim fi As New System.IO.FileInfo( _
System.Reflection.Assembly.GetExecutingAssembly.Location)
Return fi.DirectoryName
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GetIni(0, "aaa", "sss")
End Sub
===============================================-
iniファイルの中身
[aaa]
sss=実験
VB6はさわり程度しか(変数とfor文とif文とswitch文と配列しか)やっていなかったので、
VB6のソースをVB.NETのソースに変えるのにかなりきつかったです。
でも、やっと出来た。
nanashiさん
ありがとうございます。