I have posted this question once, with very little follow up (only from one Anon
ID: 3673979 • Letter: I
Question
I have posted this question once, with very little follow up (only from one Anon) that didn't solve the question, and I need an expert answer. So I am reposting the question, hoping for a better response. In Visual Basic 2010, and this is what I'm trying to do: Correct the event handler for the left CalcButton. Task 2a: Remove the syntax errors from Calc1Button_Click so that the code will compile. Task2b: Correct the logical errors that prevent the correct values from showing for a test case. (Pressing the button should convert Atlanta’s latitude to 33.63944 and longitude to 84.42806.) You will have to set the inputs manually in order to compile and test your code. Task 2c: Add documentation to your code to explain what it is meant to do. Task 2d: Check out the master copy of the project and install your changes. The following is the code I am trying to correct: Private Sub Calc1Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Calc1Button.Click Dim degrees As Double Dim minutes As Double Dim seconds As Double Dim StartPtr, StopPtr As Integer StartPtr = 0 StopPtr = Hubs(ID2Integer).Lat.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 '1 degree = 60 minutes '1 minute = 60 seconds Lat1Double = degrees + minutes / 60.0 + seconds / 360.0 Lat1TextBox.Text = Lat1Double.ToString("F5") StartPtr = 0 StopPtr = Hubs(ID2Integer).Lon.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 '1 degree = 60 minutes '1 minute = 60 seconds Lon1Double = degrees + minutes / 60.0 + seconds / 360.0 Lon1TextBox.Text = Lon1Double.ToString("F5") End Sub Can anyone provide some assistance? I have more code for the project, but this is all I need to finish completing.
Explanation / Answer
Dim StartPtr, StopPtr As Integer 'To Replace Calculator 1 Button 'Convert degrees before passing argument - Latitude StartPtr = 0 StopPtr = Hubs(ID1Integer).Lat.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'Convert minutes before passing argument StopPtr = Hubs(ID1Integer).Lat.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'Convert seconds before passing argument StopPtr = Hubs(ID1Integer).Lat.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'Math to convert Lat1Double = degrees + minutes / 60 + seconds / 3600.0 Lat1TextBox.Text = Lat1Double.ToString("F5") 'Convert degrees - Longitude StartPtr = 0 StopPtr = Hubs(ID1Integer).Lon.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'minutes StopPtr = Hubs(ID1Integer).Lon.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'seconds StopPtr = Hubs(ID1Integer).Lon.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'Math to convert Lon1Double = degrees + minutes / 60 + seconds / 3600.0 Lon1TextBox.Text = Lon1Double.ToString("F5") 'To replace calculator 2 button 'Convert degrees before passing argument - Latitude StartPtr = 0 StopPtr = Hubs(ID2Integer).Lat.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID2Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'minutes StopPtr = Hubs(ID2Integer).Lat.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID2Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'seconds StopPtr = Hubs(ID2Integer).Lat.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID2Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) 'Math to convert Lat2Double = degrees + minutes / 60.0 + seconds / 3600.0 Lat2TextBox.Text = Lat2Double.ToString("F5") 'Convert degrees before passing argument - Longitude StartPtr = 0 StopPtr = Hubs(ID2Integer).Lon.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID2Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 'minutes rivate Function ValueOf(ByVal DecimalDegrees As Double, ByVal DegreeString As String) As Double Dim Distance As Double Dim degrees As Double Dim minutes As Double Dim seconds As Double Dim StartPtr, StopPtr As Integer 'Value to return - Latitude If StartPtr = 0 Then StopPtr = Hubs(ID1Integer).Lat.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 Return Distance = degrees + minutes / 60.0 + seconds / 3600 = Lat1TextBox.Text = Distance.ToString("F5") End If 'Value to return - Longitude If StartPtr = 0 Then StopPtr = Hubs(ID1Integer).Lon.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 Return Distance = degrees + minutes / 60.0 + seconds / 3600 = Lon1TextBox.Text = Distance.ToString("F5") End If End Function Private Function DecimalDegrees(ByVal DegreeString As String) As Double Dim degrees As Double Dim minutes As Double Dim seconds As Double Dim StartPtr, StopPtr As Integer 'Value to return - Latitude If StartPtr = 0 Then StopPtr = Hubs(ID1Integer).Lat.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lat.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lat.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 Lat1Double = degrees + minutes / 60.0 + seconds / 3600 Return Lat1Double End If 'Value to return - Longitude If StartPtr = 0 Then StopPtr = Hubs(ID1Integer).Lon.IndexOf("°", StartPtr) degrees = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("'", StartPtr) minutes = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 StopPtr = Hubs(ID1Integer).Lon.IndexOf("""", StartPtr) seconds = Convert.ToDouble(Hubs(ID1Integer).Lon.Substring(StartPtr, StopPtr - StartPtr)) StartPtr = StopPtr + 1 Lon1Double = degrees + minutes / 60.0 + seconds / 3600 Return Lon1Double End If End Function