Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580

    problema nel gestire culture

    salve a tutti
    ho un programma che individua automaticamente il CultureInfo del computer e gestisce in automatico la traduzione

    il problema si è posto quando facendo un test ho forzato il CultureInfo in "en-EN"
    ed ho cercato di sommare 2 numeri: "2.3" e "1", con il risultato di : "24"

    codice:
              culture = New System.Globalization.CultureInfo("en-EN")
                System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(CBB_Lingua.Text)
       
    
    
    
            Dim N As Int64 = 2.3
            debug.print N+1 'risultato 24
    cosa sbaglio?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Quel risultato non è possibile. N è un Int64, per cui 2.3 viene troncato a 2 all'assegnazione; la Debug.Print dovrebbe stampare 3. Posta il codice che stai effettivamente impiegando.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    1) perché crei culture e poi non lo usi ?
    2) cosa c'è in CBB_Lingua.Text ?
    3) il valore assegnato a N è compilato e non dipende dall'esecuzione del programma; è un intero e per me vale sempre 2


    Probabilmente tu stai utilizzando effettivamente valori provenienti da stringhe o textbox e non nel codice, ovvero così

    Dim N As Int64 = "2.3"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Quel risultato non è possibile. N è un Int64, per cui 2.3 viene troncato a 2 all'assegnazione; la Debug.Print dovrebbe stampare 3. Posta il codice che stai effettivamente impiegando.
    Quote Originariamente inviata da oregon Visualizza il messaggio
    1) perché crei culture e poi non lo usi ?
    2) cosa c'è in CBB_Lingua.Text ?
    3) il valore assegnato a N è compilato e non dipende dall'esecuzione del programma; è un intero e per me vale sempre 2


    Probabilmente tu stai utilizzando effettivamente valori provenienti da stringhe o textbox e non nel codice, ovvero così

    Dim N As Int64 = "2.3"
    scusate
    a furia di provare ho modificato il codice originale

    ops..funziona!
    codice:
      Dim culture As System.Globalization.CultureInfo
            culture = New System.Globalization.CultureInfo("en-GB")
            System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo("en-GB")
         
            Dim N As Double = 2.3
            MsgBox(N + 1)
    penso di aver scoperto l'arcano mistero...
    prima prelevavo il valore da una textbox....
    codice:
            Dim N As Double =textbox1.text 'prelevo valore da text
            MsgBox(N + 1)
    immagino che devo fare un cast ogni volta
    ma anche impostando la variabile N=cdbl(textbox1.text)
    se il testo è 2.3 mi cambia in 23 uhm...
    voi cosa usereste per catturare il valore di una textbox ?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma perché scrivi

    codice:
      Dim culture As System.Globalization.CultureInfo
      culture = New System.Globalization.CultureInfo("en-GB")
      System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo("en-GB")
    e non semplicemente

    codice:
      System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo("en-GB")
    ?

    A che ti serve culture se non lo usi?

    In ogni caso, io farei

    codice:
            Dim dblprov As Globalization.NumberFormatInfo = New Globalization.NumberFormatInfo()
            dblprov.NumberDecimalSeparator = "."
            dblprov.NumberGroupSeparator = ","
            dblprov.NumberGroupSizes = New Integer() {3}
    
    
            Dim N As Double = Convert.ToDouble(TextBox1.Text, dblprov)
    Ultima modifica di oregon; 12-11-2013 a 13:16
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.