Newsgroup: it.comp.lang.visual-basic
Titolo: Problema di conversione

Sto cercando di capire come funziona
la corversioni di tipi ma mi blocco qui :
dim a as double
a=cdbl(text1.text)
se text1.text  è uguale a  12.35
mi rifila un bel
a=1235
io avrei bisogno
di a=12.35
dove sbaglio ?



Devi decidere se lavorare localizzo o delocalizzato. Se lavori localizzato
usi i vari cdbl e simili, ma allora il "." non è il separatore dei decimali
del PC (lo è in ENG ma non in ITA).
Se invece lavori delocalizzato, cioè sempre uguale senza guardare le
impostazioni di sistema usi es. str, val e simili.

 ha scritto nel messaggio 
news:4c582e19$0$31377$4faf...@reader1.news.tin.it...

VB6, suppongo.
Se nelle impostaz. internazionali il separatore dei decimali è "," (come è 
generalmente negli OS italiani), allora è inevitabile: CDbl() interpreta 
solo quel carattere come separatore.
Se vuoi che *a prescindere* VB ti interpreti invece il "." come separatore 
dei decimali, devi usare la funzione di conversione non dipendente da tali 
impostazioni, Val().
a = Val(text1.text)
Bye
Raf 

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:uf87tmrhtfyy.19j9bbmxu5x9t$.dlg@40tude.net...

Scusa l'ignoranza ma come LOCALIZZO ?

 ha scritto nel messaggio 
news:i39b8l$dam$1...@alix.livenet.it...

Grazie per la risposta  ma uso il vb2010
e la funz Val  da il valore troncato  a= 12
 

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:uf87tmrhtfyy.19j9bbmxu5x9t$.dlg@40tude.net...

Trovato grazie !!!
localize=true sul form    giusto ? 

 Grazie per la risposta  ma uso il vb2010
Dim a As Double
a = Double.Parse(TextBox1.Text, Globalization.CultureInfo.InvariantCulture)
Però sei sicuro che vuoi usare un separatore decimale diverso da quello 
impostato a livello di sistema? Perché?
Se l'utente ha impostato la virgola o altro, vuol dire che gli va bene 
usare la virgola o altro. Perché vuoi costringerlo a usare il punto?
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3: Soluzioni a raccolta", molto più di semplici 
FAQ! 
http://it.openoffice.org/doc/manuali/

 usare la virgola o altro. Perché vuoi costringerlo a usare il punto?
No no  non voglio assolutamente obbligaread  usare punti o virgole
ma si risolve tutto mettendo a TRUE  il localize del form
e usando la funzione VAL 

 localize=true sul form    giusto ?
Non c'entra proprio nulla (credo serva per le lingue dei controlli quello
che hai impostato), è solo come vuoi lavorare te.
Lavorare localizzato significa mostrare e gestire i dati secondo le
impostazioni del sistema operativo per cui far vedere un importo in una
casella di testo sarà mostrato:
1.000,25 in italia (25/01/2000)
1,000.25 in USA (01/25/200)
1 000,25 in francia (se ricordo bene)
Lavorare delocalizzato vuol dire avere dei formati fissi, indipendentemente
dalle impostazioni del sistema operativo, per cui il . come separatore dei
decimali ecc.

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:goqa64lq0xod.1e...@40tude.net...

non centra ma funziona.......
Prima con la funzione VAL    mi convertiva il text   da 12.56  a 1256
col localized  lo fa correttamente 12.56  lo converte in 12,56.
Quello che mi serviva grazie 

 col localized  lo fa correttamente 12.56  lo converte in 12,56.
Avrai scritto qualocosa di diverso perchè la VAL non ti da 1256. Prova con
un progetto vuoto...

 un progetto vuoto...
Comunque non vedo motivo per usare Val, che è presente solo per 
compatibilità nel namespace Microsoft.VisualBasic.
Ci sono i metodi nativi Parse e TryParse dell'oggetto Double, che oltre 
ad essere molto più flessibili sono indipendenti dal linguaggio. In caso 
che si decida di passare a C# :-)


 che si decida di passare a C# :-)
Ho cominciato poco con .NET e ho deciso di non lavorare delocalizzato per
ora :)


Grazie per l'input...vedrò l'istruzione parse
Ma il VAL   è una istruzione ''deprecated''
motivo ?

 motivo ?
Per il motivo che ti ho già detto. E' una istruzione contenuta in 
Microsoft.VisualBasic.dll, che è una libreria usata solo in 
VB.NET
 e ha 
lo scopo di mantenere un certo grado di compatibilità con VB6.
Se non stai convertendo da VB6 non c'è motivo di usare le istruzioni di 
quella libreria, ma conviene usare i metodi nativi di .NET, che sono 
universali e inpendenti dal linguaggio, oltre che generalmente più 
flessibili es efficienti.



Capito !
Thanx  evitero'......