求助:vb2008 用GetPrivateProfileString读取ini文件无法正确读取
程序清单如下:
==========================================================================================================
Option Explicit On
Public Class Form1
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Int16
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 Int16
Private Declare Function WritePrivateProfileString Lib "kernel32 " Alias "WritePrivateProfileStringA " (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Public ErrorMsg As String
Private Sub new_Initialize()
ErrorMsg = vbNullString
End Sub
'写入----------------------------------
Public Function WriteString(ByVal iniFileName As String, ByVal Section As String, ByVal key As String, ByVal Value As String) As Boolean
WriteString = False
ErrorMsg = vbNullString
If iniFileName = " " Then
ErrorMsg = "INI file has not been specifyed! "
Exit Function
End If
If WritePrivateProfileString(Section, key, Value, iniFileName) = 0 Then
ErrorMsg = "Failed to write to the ini file! "
Exit Function
End If
WriteString = True
End Function
'读出字符串----------------------------
Public Function ReadString(ByVal iniFileName As String, ByVal Section As String, ByVal key As String, ByVal Size As Long) As String
Dim ReturnStr As String
Dim ReturnLng As Long
ErrorMsg = vbNullString
ReadString = vbNullString
If iniFileName = " " Then
ErrorMsg = "INI file has not been specifyed! "
Exit Function
End If
ReturnStr = Space(Size)
ReturnLng = GetPrivateProfileString(Section, key, vbNullString, ReturnStr, Size, iniFileName)
If ReturnLng = 0 Then
ReturnLng = GetPrivateProfileInt(Section, key, 1, iniFileName)
If ReturnLng = 1 Then
ErrorMsg = "Can not read the ini file! "
MsgBox(ErrorMsg, MsgBoxStyle.Critical)
Exit Function
End If
End If
ReadString = Microsoft.VisualBasic.Left(ReturnStr, ReturnLng).Trim
End Function
'读出数值-----------------------------
Public Function ReadInt(ByVal iniFileName As String, ByVal Section As String, ByVal key As String) As Long
Dim ReturnLng As Long
ReadInt = 0
ErrorMsg = vbNullString
If iniFileName = " " Then
ErrorMsg = "INI file has not been specifyed! "
Exit Function
End If
ReturnLng = GetPrivateProfileInt(Section, key, 0, iniFileName)
If ReturnLng = 0 Then
ReturnLng = GetPrivateProfileInt(Section, key, 1, iniFileName)
If ReturnLng = 1 Then
ErrorMsg = "Can not read the ini file! "
MsgBox(ErrorMsg, MsgBoxStyle.Critical)
Exit Function
End If
End If
ReadInt = ReturnLng
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(ReadString("E:\3GPConverter_3.1\BRVideoConverter.ini", "System Settings", "CVMode", 133), MsgBoxStyle.OkOnly, "sys")
End Sub
==========================================================================================================
ini文件可以任意选取。
程序运行后,总是提示无法读取INI文件,分析后,发现GETPRIVATEPROFILESTING返回的总是0,无论键值是否存在,余百思不得其解,请教大家,问题何在?谢谢