VB6升级到VB2010之十五: 缺省值传递未进行推断直接默认为ByRef导
原VB6代码: Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long,ByVal lpValueName As String,ByVal lpReserved As Long,lpType As Long, lpData As String,lpcbData As Long) As Long '后面的引用中,代码 'Detected DataType(lngType) &Data Length(lngcbData) 升级为VB2008/2010后: Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA"(ByVal hKey As Integer,ByVal lpReserved As Integer,ByRef lpType As Integer,ByRef lpData As String,ByRef lpcbData As Integer) As Integer '后面引用中的代码: 'Detected DataType(lngType) & Data Length(lngcbData) 由升级可结可以看到,原VB6的声明语句中的lpData As String升级为:ByRef lpData As String,ByRef为VB的缺省传值方式。 这里,并没有错。 但是 VB6后面引用中的 ByVal strRet,升级到为:strRet,直接忽视了ByVal而使用了ByRef的方式。 如此,一个需要ByVal传递的值StrRet变成了ByRef传递。 这样,造成的后果,不言而喻。 究其原因是:向导在将声明语句中的lpData As String升级为:ByRef lpData As String的时候,并没有参考后面的引用方式ByVal strRet 看来升级向导没有我们想像的智能,所以我们在升级Code的时候,要更多的相信自已。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |