VS2010的VB里面GetPrivateProfileString不好使了?

我原来是玩VB6的,但是VB6在Win7下面看着很难受,于是转入VB 2010(是在VS2010 Ultimate里面的)
但是在VB2010里GetPrivateProfileString读不到数据。lpReturnedString里面啥也没有。代码如下:
Function GetDir(ByVal DirType As DirType) As String
If Right(Application.StartupPath, 1) <> "\" Then Pt = Application.StartupPath & "\"
Else
Pt = Application.StartupPath
End If
If Dir(Pt & "setting.ini") <> "" Then
If DirType = modMain.DirType.Dest Then
DestDir = Space(256)
GetPrivateProfileString("Global", "Dest", "", DestDir, 255, Pt & "setting.ini")
GetDir = Trim(DestDir)
ElseIf DirType = modMain.DirType.ROFS Then
DestDir = Space(256)
GetPrivateProfileString("Global", "ROFS", "", DestDir, 255, Pt & "setting.ini")
GetDir = Trim(DestDir)
Else
GetDir = ""
End If
Else
IO.File.Create(Pt & "setting.ini")
GetDir = ""
End If
End Function

那个Pt & "setting.ini",在即时窗口里查询到是"I:\VBProgs\Copier\Copier\Copier\bin\Debug\setting.ini"

这个setting.ini的内容是(这个文件的位置肯定是对的,因为在开始——运行里面可以用这个路径打开它):
[Global]
Dest=E:\
ROFS=F:\

但是运行时DestDir变量里面只有一堆空格。GetDir函数返回空。
一样的用法,在VB6里面就很好使。而且INI文件的路径还带空格。
是VB2010在哪些地方发生了变化吗?这个工程我选的是.NET Framework 2.0
这是模块里的函数,里面的所有变量都在模块的头部用Public已经声明过

谢谢stmcatl的回答,现在:
1.还是那个VS编译的程序,XP下面获取不到
2.不是同一个程序,但是用法相同,VB6在Win7和XP下都能获取到
3.现在它一直就在那里,我都没动它了
4.写什么它就返回什么(就好像没有那个INI似的)

如果把lpApplicationName写成vbNullString,返回的东西好像是win.ini里面的小节名称(不确定,反正有一大堆)

问题解决了:用VB6创建一个ActiveX DLL,把这整个函数连同设计的枚举、变量全部搬移过去,然后在VS2010添加引用就完成了……

1. 在xp 环境下 看是否能获取到。
2. 在vb6.0 下 看能否获取到。
3. ini文件 不用 刻意去Create 当你往里写内容时,若不存在ini文件就直接创建了。
4. GetPrivateProfileString为第三个参数参数写个值,
如 GetPrivateProfileString("Global", "Dest", "没有找到", DestDir, 255, Pt & "setting.ini")
然后再将DestDir显示出来。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网