Vb.net 长度可';不能小于零
我收到以下错误: mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的未处理异常 其他信息:长度不能小于零 这是产生错误的代码:Vb.net 长度可';不能小于零,vb.net,outofrangeexception,Vb.net,Outofrangeexception,我收到以下错误: mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的未处理异常 其他信息:长度不能小于零 这是产生错误的代码: 'Parse coordinate string into coordinate values (degrees, minutes, seconds) 'Degrees StartPtr = 0 StopPtr = DegreeString.IndexOf("°", StartPtr) De
'Parse coordinate string into coordinate values (degrees, minutes, seconds)
'Degrees
StartPtr = 0
StopPtr = DegreeString.IndexOf("°", StartPtr)
Degrees = Convert.ToDouble(DegreeString.Substring(StartPtr, StopPtr - StartPtr))
错误出现在Degrees行中,告诉我我的stopttr返回-1。函数抱怨您传递了一个负数作为长度
参数。这是无效的,原因很明显(对吧?)
这意味着stopttr-StartPtr
的计算值必须小于零。您知道StartPtr
正好为零,因为您刚刚将其设置为零。因此stoptr
必须小于零
这意味着递减。IndexOf(“°”,StartPtr)
返回一个负数
当未找到子字符串时,函数返回-1
因此,问题一定是
DegreeString
不包含字符“°”
请通读,然后查看此处以了解如何创建一个。你刚刚用一个含糊不清的句子扔掉了一大堆代码,我真的搞不懂这个句子。我回去调整了一些问题,把一些代码去掉了。我希望我留下的足够多让人们理解这个程序在做什么。我理解你在返回索引-1时所说的话。我试图将:StartPtr=0 stopttr=Hubs(Index1Integer)。Lat.IndexOf(“°”,StartPtr)degrees=Convert.ToDouble(Hubs(Index1Integer)。Lat.Substring(StartPtr,stopttr-StartPtr))更改为上面的函数,DegreeString是我的输入参数。我不知道现在它怎么会超出范围。@Marqueburges-这是因为DegreeString
不包含“°”
。这是唯一的原因。为了了解发生了什么,您需要在代码中设置一些断点并逐步执行,观察变量值在代码执行时的变化。对不起。我看了一遍,明白你们在说什么。我已经看过去了,谢谢你的帮助