题
我正在调用一个返回字符串的函数,但它实际上只返回它应该返回的字符串的第一个字符。
以下是重新创建我遇到的问题的示例代码:
Public Function GetSomeStringValue(Value as Integer) As String
... Code Goes here
Return Some_Multicharacter_string
End Function
函数调用如下:
SomeStringValue = GetSomeStringValue(Value)
为什么这不会返回整个字符串?
解决方案
注意:这个答案最初是由OP,Kibbee写的,作为一个自我回答。但是,它写在问题的正文中,而不是作为一个实际的单独答案。由于OP拒绝其他用户(包括主持人)的重复请求,要按照网站规则重新发布,我自己重新发布。
在尝试了一百种不同的事情之后,重构我的代码,多次调试调试器中的代码,甚至让同事看看问题,我终于在天才的闪光中发现了答案。 / p>
在我重构代码的某个时刻,我更改了函数以摆脱Value参数,保留如下:
Public Function GetSomeStringValue() As String
... Code Goes here
Return Some_Multicharacter_String
End Function
但是,我忽略了在调用函数时删除了我传入的参数:
SomeStringValue = GetSomeStringValue(Value)
编译器没有抱怨,因为它解释了我在做的事情,因为调用没有括号的函数,这是VB6时代的遗留功能。然后,Value参数转换为从函数返回的字符串(也就是字符数组)的数组索引。
所以我删除了参数,一切正常:
SomeStringValue = GetSomeStringValue()
我发布此内容,以便其他人在遇到问题时能够识别问题,并且能够比我更快地解决问题。我花了很长时间才解决,我希望我可以节省一些时间。
不隶属于 StackOverflow