Newsgroup: it.comp.lang.visual-basic
Titolo: Punto o virgola?

Come faccio a sapere quale è il separatore decimale impostato nel sistema?
A prescindere dal fatto che di base winnt è . e win98 è la virgola ...
avevo pensato di utilizzare l'api getlocalesystem e qualcosa ... ma non c'è
un metodo
più diretto?
Ciao Andrea


Potresti fare:
if instr(cstr(123.456),".")>0 then "è il punto" else "è la virgola"
Ciao
Sirjo

uhmmm cosě come l'hai messo ... ho capito quello che volevi fare ... perň č
errato
perchč tu gli dici di fare un confronto secco sulla stringa ... e se nella
stringa metti
il punto, troverai il punto, diversamente troverai la virgola
Al massimo si potrebbe dicharare una variabile as single, quindi passargli
un numero con
una virgola e poi controllare ... se nel tuo numero esiste ancora la virgola
o meno ...
in quel caso sapresti se č virgola o punto ... tutto questo partendo dal
presupposto che
stiamo prendendo in considerazione solo punto e virgola. Ma se un tizio
qualsiasi si sogna
di mettere come separatore decimanele il punto e virgola (Per l'assurdo)?
Siamo da capo a 12 ... non sapendo quale č il separatore ... i conti non mi
torneranno mai
e per questo motivo č necessario un sistema piů empirico per trovare sto
separatore.
Grazie lo stesso
Ciao Andrea

Vabbe', buttiamola cosi':
Copia sta roba in un modulo
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ě
Option Explicit
'// enumerazione delle informazioni di localizzazione
Public Enum eLocaleInfoEnum
  LOCALE_SSHORTDATE = &H1F        '//  short date format string
  LOCALE_SLONGDATE = &H20         '//  long date format string
  LOCALE_SDECIMAL = &HE         '//  decimal separator
  LOCALE_SCOUNTRY = &H6         '//  localized name of country
  LOCALE_SCURRENCY = &H14        '//  local monetary symbol
  LOCALE_SDATE = &H1D        '//  date separator
  LOCALE_SINTLSYMBOL = &H15        '//  intl monetary symbol
  LOCALE_SLANGUAGE = &H2         '//  localized name of language
  LOCALE_SNEGATIVESIGN = &H51        '//  negative sign
  LOCALE_SPOSITIVESIGN = &H50        '//  positive sign
  LOCALE_STHOUSAND = &HF         '//  thousand separator
  LOCALE_STIME = &H1E        '//  time separator
  LOCALE_STIMEFORMAT = &H1003      '//  time format string
  LOCALE_SMONDECIMALSEP = &H16        '  monetary decimal separator
  LOCALE_SMONGROUPING = &H18        '  monetary grouping
  LOCALE_SMONTHOUSANDSEP = &H17        '  monetary thousand separator
End Enum
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA"
(ByVal LOCALE As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal
cchData As Long) As Long
Private Declare Function GetThreadLocale Lib "kernel32" () As Long
'// ==================================================
Public Function VBGetLocaleInfo(ByVal a_LocaleInfo As eLocaleInfoEnum) As
String
  '
  ' ACTION: ritorna una stringa di sistema a seconda del valore del flag
<a_LocaleInfo>
  '
  ' PARAMETERS: <a_LocaleInfo> flag per scegliere l' output della funzione
  '
  Dim mi_Buffer As String
  mi_Buffer = Space(255)
'  If GetLocaleInfo(GetSystemDefaultLCID(), a_LocaleInfo, mi_Buffer,
Len(mi_Buffer)) Then
  If GetLocaleInfo(GetThreadLocale(), a_LocaleInfo, mi_Buffer,
Len(mi_Buffer)) Then
    VBGetLocaleInfo = StrFromSz(mi_Buffer)
  End If  '// GetLocaleInfo
End Function
Private Function StrFromSz(a_sSource As String) As String
  Dim ich As Integer
  ich = InStr(1, a_sSource, Chr(0), vbTextCompare)
  If ich > 0 Then
    StrFromSz = Trim(Left(a_sSource, ich - 1))
  Else
    StrFromSz = Trim(a_sSource)
  End If
End Function
^^^^^^^^^^^^^^^^^^^^^^^
Ciao
Aldo

 il punto, troverai il punto, diversamente troverai la virgola
Non mi sembra.
se io scrivo
? cstr(123.456)
mi compare 123,456 ma se scrivo
? cstr(123,456) mi dà errore di compilazione.
Ricordati che i numeri decimali vanno scritti SEMPRE con il punto.
Quando poi VB lo trasforma in stringa ci mette la virgola o il punto
a seconda dell'impostazione internazionale.
Ciao
Sirjo

 ha scritto nel messaggio
news:910oqs$2cbd4$1...@ID-61006.news.dfncis.de...


Se vuoi ho trovato un sistema assai più corto ...
per alcuni giorni ho avuto una connessione da schifo sotto mano ... e non
potendo leggere ...
ho spulciato l'msdn come un lupo affamato.
Se serve la posto ... ma considerando che qua i thread a me scompaiono come
i funghi del giorno
dopo non sò che efficacia possa avere.
Ciao Andrea

 wrote in message
news:mjlZ5.1737$Kw2....@twister2.tin.it...


 dopo non sò che efficacia possa avere.
Posta pure. E' sempre bene confrontare soluzioni diverse. Se pensiamo quante
volte Edison ha bruciato lampadine prima di arrivare ad una buona soluzione
...
Ciao
Aldo