Ed ecco una funzioncina per convertire una coordinata dal formato gradi/primi/secondi al formato decimale: :)
' Gambas class file
Public Sub Form_Open()
Dim coordinata As String = "115°48'35"
Dim decimale As Float 'coordinata in formato decimale
decimale = converti(coordinata)
Print decimale
End
Public Function converti(coordinata As String) As Float 'converte una coordinata da gradi/primi/secondi in cooordinata decimale
Dim scanna As String[] 'array per splittare la coordinata
Dim gradi As Short
Dim primi, secondi As Byte
Dim decimale As Float
scanna = Scan(coordinata, "*°*'*") 'separiamo i componenti della coordinata
gradi = CShort(scanna[0]) 'convertiamoli in numeri
primi = CByte(scanna[1])
secondi = CByte(scanna[2])
decimale = gradi + primi / 60 + secondi / 3600 'calcoliamo il risultato
Return decimale
End
Qualcuno però mi deve spiegare come mai Split mi mette i primi e i secondi nel 3° e 4° elemento dell'array mentre nel 2° ci mette uno spazio (o nulla, non si capisce).
Poiché la struttura della stringra sarà sempre gradi°minuti'secondi, ti conviene utilizzare la funzione Scan( ).
Ossia:
......
scanna = Scan(coordinata, "*°*'*")
gradi = CShort(scanna[0]) 'convertiamoli in numeri
Print gradi
primi = CByte(scanna[1])
Print primi
secondi = CByte(scanna[2])
Print secondi
......
Molto apprezzabile positivamente la cura, da te profusa, nella diversificazione dei tipi di dati (Short e Byte).