我是VB新手,正在开发VB6到VB.net的迁移。 其中一个解决方案已成功迁移,正在进行第二个解决方案。
Dim temp As New System.Text.StringBuilder(1024)
Public Sub Main()
Dim i As Integer = GetPrivateProfileString("WinFlex", "UserPath", "", temp, 1024, "C:\WINDOWS\Win.Ini")
End Sub
<DllImport("kernel32")> _
Private Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function
这个特殊代码需要(temp)返回我的Ini文件的工作目录(类似于&#34; C:\ WinFlex6 \ 1&#34;),但是它返回一个空白值。 相同的代码适用于不同的解决方案(其他人迁移了它)。 我不确定问题是什么,我在网上尝试了几个修复,但都没有。
任何人都可以帮我解决这个问题吗?
之前它工作正常,但经过一些调试后它停止工作。
答案 0 :(得分:1)
对不起,伙计们,我在vb中天真,因此正在做这个愚蠢的错误。 谢谢Steve 提起这件事。
问题是,我正在宣布模块中的功能。
<DllImport("kernel32")> _
Private Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function
此功能可以是“共享功能”,可以添加到类中。
Public Shared Function
一旦我在vb类中声明它
<DllImport("kernel32")> _
Public Shared Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function
宾果!有效! 感谢Steve 再次!!