Oppure

Loading
29/07/10 13:43
Neo1986
Buongiorno a tutti,

è da purtroppo molto tempo che combatto quotidianamente con un problema grosso:

Il simbolo di separatore decimale a seconda delle impostazioni internazionali settate sulla macchina.

In sostanza il problema è questo:

Il pc di sviluppo ha impostazioni internazionali ovviamente italiane, cioè:

Separatore decimale - Simbolo Punto .
Separatore migliaia - Simbolo Virgola ,

Purtroppo quando il software viene eseguito su una macchina americana (che utilizza la configurazione opposta alla nostra) tutte le Format$ dei numeri double se ne vanno a farsi benedire, ed oltretutto la maggior parte dei calcoli con numeri in virgola mobile vengono sballati.

Come posso rimediare a questo problema? mi sembra una cosa assurda dover cambiare le opzioni internazionali sui pc dei clienti

Grazie :k:
aaa
29/07/10 16:24
Alfonso
Se dovessi scrivere il programma ex novo ti consiglierei di usare le CultureInfo.
Dovresti usare delle formattazioni standard di .net e selezionare la CultureInfo in funzione del paese.
Imports System.Globalization

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim culture As New System.Globalization.CultureInfo("it-IT", True)
   'Dim culture As New System.Globalization.CultureInfo("en-US", True)
    Dim cifra As Double = 12345.6789
    Dim oggi As Date = Now
    MessageBox.Show(String.Format(oggi.ToString("D", culture)))
    MessageBox.Show(String.Format(cifra.ToString("C", culture)))

End Sub

Se devi risolvere il problema su dei programmi già fatti è dura fare le modifiche che ti consiglio, specialmente se ci sono molte formattazioni.
aaa
30/05/20 14:27
giu446
Postato originariamente da Alfonso:

Se dovessi scrivere il programma ex novo ti consiglierei di usare le CultureInfo.
Dovresti usare delle formattazioni standard di .net e selezionare la CultureInfo in funzione del paese.
Imports System.Globalization

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim culture As New System.Globalization.CultureInfo("it-IT", True)
   'Dim culture As New System.Globalization.CultureInfo("en-US", True)
    Dim cifra As Double = 12345.6789
    Dim oggi As Date = Now
    MessageBox.Show(String.Format(oggi.ToString("D", culture)))
    MessageBox.Show(String.Format(cifra.ToString("C", culture)))



End Sub

Se devi risolvere il problema su dei programmi già fatti è dura fare le modifiche che ti consiglio, specialmente se ci sono molte formattazioni.


Grazie Alonso,
ci ho messo un po a capire come utilizzarlo in base alla mia esigenza, ma alla fine ho capito.
Sono nuovo della programmazione e stavo creando una calcolatrice molto basica e mi occorreva aggiungere la "," nella textbox.text, nel caso servisse a qualcuno posto il codice dove utilizzo la classe CultureInfo scritta sotto l'evento "Private Sub b_virgola_Click(sender As Object, e As EventArgs) Handles b_virgola.Click".

paste.ubuntu.com/p/pYtz7v834q/
aaa