GetPrivateProfileString() 返回空字符串,尽管有默认值

Maw*_*awg 2 vb.net visual-studio-2008

私有声明函数 GetPrivateProfileString Lib "kernel32" 别名 _
        "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
            ByVal lpKeyName As String, _
            ByVal lpDefault 作为字符串,_
            ByVal lpReturnedString As String, _
            ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Dim value As String = ""
Dim length As Integer
Dim IniFileName As String

GetPrivateProfileString("Config", "UserName", "None", value, length, IniFileName)
Run Code Online (Sandbox Code Playgroud)

value包含一个空字符串!?

事实上,我承认自己是 VB n00b,不到一周,但我看不出那里有什么问题。该文件存在,它包含一个名为“Config”的部分,其中有一个名为“UserName”的条目,带有一个值 - 但即使没有,也不会value采用默认值?

(而且,不,我不想使用注册表,谢谢;-)


编辑:它没有返回一个空字符串——它返回的是我value在调用之前初始化的任何内容GetPrivateProfileString()

也就是说如果我

Dim value As String = "xxx"
Run Code Online (Sandbox Code Playgroud)

然后它在调用后仍然包含“xxx”而不是默认值。

hyp*_*ers 5

确保您的 INI 文件的代码页是 ANSI。我得到的结果是空的,因为我的 ini 是 UTF-8。

对我来说并不明显。