Salut J'ai un Méga problème...
Quand j'utilise mon porgramme (programme codé sur VB.Net Compact Framework - Visual Sutio 2005) que j'ai importé sur mon iPaq J'appuis sur un bouton de mon programme et j'ai un messahge d'erreur (il ferme mon programe)
SVP aidez moi.. J'ai presque fini mon prog... et ca me dit qu'un bouton (mon bouton cmdCalcul) ne fonctionne pas. Je vous annexe l'enssemble de mon code... Si vous voyer d'ou peux venir le probleme..
Ca dit:
Calcul.exe InvalidCastException
à
Microsoft.VisualBasic.CompilerService.Conversions.ToDouble()
à
Microsoft.VisualBasic.CompilerService.Conversions.ToDouble()
à DataGrid.Form1.cdmCalcul_Click()
à
System.Windows.Forms.Control.OnClick()
à
System.Windows.Forms.Button.OnClick()
à
System.Windows.Forms.ButtonBase.WnProc()
à
System.Windows.Forms.Control._InteralWnProc()
àMicrosoft.AGL.Forms.EVL.EnterMainLoop()
à
System.Windows.Forms.Application.Run()
Imports
System.IOImports
System.MathPublic
Class Form1Public FichierTexte AsStringPublic Tableau(0) AsStringPublic CoordYStation AsDoublePublic CoordXStation AsDoublePublic CoordYBack AsDoublePublic CoordXBack AsDoublePublic CompteurFormule AsIntegerPublic dbRadian AsDouble = (180 / System.Math.PI)Public AppPath AsString = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase)Public LigneSplit(4) AsStringDim Etape1 AsDouble, Etape2_Dx AsDouble, Etape2_Dy AsDouble, Etape3_X AsDouble, Etape3_Y AsDouble
Dim X1 AsDouble, X2 AsDouble, Y1 AsDouble, Y2 AsDouble, dX AsDouble, dY AsDoubleDim aTan1 AsDoublePublic aTan2 AsDoubleDim dbDistance AsDoubleDim Degres AsSingle, Minutes AsLong, Secondes AsLongDim Degres_ AsSingle, Minutes_ AsSingle, Secondes_ AsDoubleDim Degres__ AsSingle, Minutes__ AsSingle, Secondes__ AsDoubleDim sglValeurDD AsSingle
PublicFunction GisementDepart()'*******************************************************'Trouver Gisement de l'Ouverture'*******************************************************If CompteurFormule = 1 ThenX1 =
CDbl(CoordXStation)X2 =
CDbl(CoordXBack)Y1 =
CDbl(CoordYStation)Y2 =
CDbl(CoordYBack)ElseIf CompteurFormule = 2 ThenX1 =
CDbl(CoordXStation)X2 =
CDbl(CoordXBack)Y1 =
CDbl(CoordYStation)Y2 =
CDbl(CoordYBack)ElseIf CompteurFormule = 3 ThenX1 =
CDbl(Replace(lblCoordX.Text, ".", ","))X2 =
CDbl(CoordXStation)Y1 =
CDbl(Replace(lblCoordY.Text, ".", ","))Y2 =
CDbl(CoordYStation)ElseIf CompteurFormule = 4 Then'X1 = CDbl(Form1.lblStationCoordXPolaire.Caption)'X2 = CDbl(Form1.lblBackCoordXPolaire.Caption)'Y1 = CDbl(Form1.lblStationCoordYPolaire.Caption)'Y2 = CDbl(Form1.lblBackCoordYPolaire.Caption)EndIfdX = X2 - X1
dY = Y2 - Y1
'***********************************************************************'Formule pour connaître le cadrant dans lequel se trouve les coordonnéesIf dX >= 0 And dY >= 0 ThenaTan1 = Atan(dX / dY)
ElseIf dX >= 0 And dY < 0 Or dX < 0 And dY < 0 ThenaTan1 = Atan(dX / dY) + System.Math.PI
ElseIf dX < 0 And dY >= 0 ThenaTan1 = Atan(dX / dY) + (2 * System.Math.PI)
EndIf'************************************************************************aTan2 = aTan1 * dbRadian
'Convertir les Radians en Degrés décimaux'******************************************************************************' Conversion en Degré, Minute, Seconde pour des fins visuel seulementDegres = Fix(aTan2)
'Fix sans décimal et Val avec décimalMinutes = Fix((aTan2 - Degres) * 60)
Secondes = (((aTan2 - Degres) * 60) - Minutes) * 60
'******************************************************************************'Calcul Inverse entre Station et BackIf StatusBar1.Text = "Facteur: 1"ThendbDistance = (Sqrt(dX ^ 2 + dY ^ 2)) / 1
ElsedbDistance = (Sqrt(dX ^ 2 + dY ^ 2)) / 0.9999
EndIfIf CompteurFormule = 1 ThenlblDistanceConnu.Text = Fix(dbDistance) + Format(dbDistance - Fix(dbDistance),
"0.000")lblDistanceConnu.Text = lblDistanceConnu.Text & Space(1) &
"m"ElseIf CompteurFormule = 2 ThenlblDistance.Text = Fix(dbDistance) + Format(dbDistance - Fix(dbDistance),
"0.000")lblDistance.Text = lblDistance.Text & Space(1) &
"m"ElseIf CompteurFormule = 4 Then'lblDistanceConnuPolaire.text = Fix(dbDistance) + Format(dbDistance - Fix(dbDistance), "0.000")'lblDistanceConnuPolaire.text = lblDistanceConnuPolaire.text & Space(1) & "m"EndIfGisementDepart = aTan2
EndFunctionPublicFunction DegreDecimal_en_DMS()If CompteurFormule = 1 ThensglValeurDD = aTan2
ElseIf CompteurFormule = 2 Then'sglValeurDD = frmCalcul.lblAzimut.CaptionElseIf CompteurFormule = 3 Or CompteurFormule = 4 ThensglValeurDD = GisementDepart()
EndIf' Conversion en DMS pour des fins visuel seulementDegres_ = Fix(sglValeurDD)
'Fix sans décimal et Val avec décimalMinutes_ = Fix((sglValeurDD - Degres_) * 60)
Secondes_ = (((sglValeurDD - Degres_) * 60) - Minutes_) * 60
Secondes_ = Format(Secondes_,
"0.00") 'Format(dbDistance - Fix(dbDistance), "0.000")DegreDecimal_en_DMS = Degres_ &
"°" & Minutes_ & "'" & Val(Secondes_) & "''"'DegreDecimal_en_DMS = Format(DegreDecimal_en_DMS, "0.00000")EndFunctionPublicFunction DMS_en_DegreDecimal()Dim AzimutDMS AsDouble'AzimutDMS = CDbl(frmCalcul.txtAzimutSaisi)
Degres__ =
CDbl(Fix(AzimutDMS))Minutes__ =
CDbl(Fix((AzimutDMS - Degres__) * 100))Secondes__ =
CDbl((((AzimutDMS - Degres__) * 100) - Minutes__) * 100)DMS_en_DegreDecimal =
CDbl((((Secondes__ / 60) + Minutes__) / 60) + Degres__)EndFunctionPublicFunction CalculCoord()If CompteurFormule = 3 ThenEtape1 = DMS_en_DegreDecimal()
ElseIf DMS_en_DegreDecimal() + aTan2 > 360 ThenEtape1 =
CDbl(DMS_en_DegreDecimal() + aTan2) - 360ElseEtape1 =
CDbl((DMS_en_DegreDecimal() + aTan2)) '345,97969EndIfEndIfEtape2_Dx = Sin((Etape1 * System.Math.PI) / 180) *
CDbl(Replace(txtDistanceSaisi.Text, ".", ","))Etape2_Dy = Cos((Etape1 * System.Math.PI) / 180) *
CDbl(Replace(txtDistanceSaisi.Text, ".", ","))Etape3_X = CoordXStation + Etape2_Dx
Etape3_Y = CoordYStation + Etape2_Dy
lblCoordX.Text = Format(Etape3_X,
"0.0000")lblCoordY.Text = Format(Etape3_Y,
"0.0000")EndFunction
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load'Private Sub DegréRadian()'Reponse.Text = (Valeur.Text * Pi) / 180 'txt.Text = (Sin(1 * Pi / 180))'End Sub'Private Sub RadianDegré()'Reponse.Text = (Valeur.Text * 180) / Pi'End Sub'txt1.Text = Sin(1 * System.Math.PI / 180)Dim i AsIntegerStatusBar1.Text =
"Facteur: 1"TryDim ObjetFichier As StreamReader = New StreamReader(AppPath & "\Coord.txt")DoFichierTexte = ObjetFichier.ReadLine()
If FichierTexte IsNothingTheni = i - 1
ElseIf i = 0 ThenReDim Tableau(i)ElseReDimPreserve Tableau(i)EndIfTableau(i) = FichierTexte
EndIfIf i = 0 ThenTextBox1.Text = Tableau(i)
ElseTextBox1.Text = TextBox1.Text & vbCrLf & Tableau(i)
'vbCrLf = Changement de ligneEndIfi = i + 1
LoopUntil FichierTexte IsNothingObjetFichier.Close()
i = i - 1
Catch exc As ExceptionMsgBox(
"Fichier inexistant")EndTryEndSubPrivateSub cdmCalcul_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cdmCalcul.ClickDim i AsIntegerCompteurFormule = 1
'Utilisation pour chercher variable dans fichier texteFor i = 0 To UBound(Tableau)LigneSplit = Tableau(i).Split(
" ")If LigneSplit(0) = txtStation.Text ThenCoordYStation = LigneSplit(1)
CoordXStation = LigneSplit(2)
lblStation.Text = CoordYStation & Space(1) & CoordXStation
EndIfIf LigneSplit(0) = txtback.Text ThenCoordYBack = LigneSplit(1)
CoordXBack = LigneSplit(2)
lblBack.Text = CoordYBack & Space(1) & CoordXBack
EndIfNext iGisementDepart()
lblAzimutConnu.Text = DegreDecimal_en_DMS
EndSubPrivateSub mnuFacteurGeodesique_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFacteurGeodesique.ClickmnuFacteurLocal.Checked =
FalsemnuFacteurGeodesique.Checked =
TrueStatusBar1.Text =
"Facteur: 0,9999"EndSubPrivateSub mnuFacteurLocal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFacteurLocal.ClickmnuFacteurLocal.Checked =
TruemnuFacteurGeodesique.Checked =
FalseStatusBar1.Text =
"Facteur: 1"EndSubPrivateSub cmdTravAzimut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTravAzimut.ClickCompteurFormule = 3
'Utilisé pour la Fonction GisementDepartCalculCoord()
GisementDepart()
lblAzimutSaisi.Text = DegreDecimal_en_DMS()
lblAzimutChange.Text =
"Azimut du Point" & Space(1) & txtPointSaisi.Text & Space(1) & "vers le point" & Space(1) & txtStation.TextEndSubEnd
Class