2016-08-21 5 views
-1

ich folgende Fehlermeldung ich empfangen:Länge kann nicht kleiner als Null

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

Additional information: Length cannot be less than zero.

Dies ist der Code, der den Fehler erzeugt:

'Parse coordinate string into coordinate values (degrees, minutes, seconds) 
'Degrees 
StartPtr = 0 
StopPtr = DegreeString.IndexOf("°", StartPtr) 
Degrees = Convert.ToDouble(DegreeString.Substring(StartPtr, StopPtr - StartPtr)) 

Der Fehler in der Degrees Linie kommt und sagt Ich mein StopPtr gibt -1 zurück.

+0

Bitte lesen Sie [ask] und dann hier, um zu erfahren, wie man [mcve] erstellt. Du hast gerade eine Menge Code mit einem vagen Wort verloren. Ich kann diesen Satz nicht wirklich herausfinden. –

+0

Ich ging zurück und berichtigte die Frage etwas und nahm etwas von der Codierung heraus. Ich hoffe, dass ich genug gelassen habe, dass die Leute verstehen, was das Programm macht. –

Antwort

1

Die Substring(startIndex, length) Funktion beschwert sich, dass Sie eine negative Zahl als length Parameter übergeben. Was aus offensichtlichen Gründen ungültig ist (richtig?).

Das bedeutet, dass StopPtr - StartPtr auf etwas weniger als Null ausgewertet werden muss. Sie wissen, StartPtr ist genau Null, weil Sie es nur auf Null setzen. Also muss StopPtr kleiner als Null sein.

Das bedeutet also DegreeString.IndexOf("°", StartPtr) gibt eine negative Zahl zurück.

Die Funktion IndexOf gibt -1 zurück, wenn die Teilzeichenfolge nicht gefunden wird. Das Problem muss sein, dass DegreeString das Zeichen "°" nicht enthält.

+0

Ich verstehe, was Sie sagen mit IndexOf -1 zurückgibt. Ich habe versucht, zu ändern: StartPtr = 0 StopPtr = Hubs (Index1Integer) .Lat.IndexOf ("°", StartPtr) Grad = Convert.ToDouble (Hubs (Index1Integer) .Lat.Substring (StartPtr, StopPtr - StartPtr)) in die obige Funktion, wobei DegreeString mein Eingabeparameter ist. Ich bin verwirrt, wie es OutOfRange jetzt sein würde. –

+0

@MARQUEBURGESS - Das liegt daran, dass 'DegreeString' kein '°' enthält. Das ist der einzige Grund. – Enigmativity

+0

Um zu verstehen, was passiert, müssen Sie einige Breakpoints in Ihrem Code festlegen und schrittweise durchlaufen, um zu beobachten, wie sich die Werte Ihrer Variablen ändern, wenn der Code ausgeführt wird. – Blorgbeard

Verwandte Themen