Autore Topic: [RISOLTO] Verificare impostazioni separatore decimale  (Letto 1675 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
[RISOLTO] Verificare impostazioni separatore decimale
« il: 28 Luglio 2015, 10:18:50 »
Ciao
Sono sicuro che se ne è già parlato, ma non trovo l'informazione
avrei bisogno di scoprire, avviando un programma Gambas, qual'è il separatore decimale in uso sul quel PC
mi sembra di ricordare che c'è qualche funzione che lo permette
« Ultima modifica: 29 Luglio 2015, 11:03:42 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #1 il: 28 Luglio 2015, 14:05:37 »
A me pare che non esista.  :-\
Molto probabilmente, se ci fosse stata una risorsa di questo genere, sarebbe stata presente nella Classe ''System''.

Credo che dovrai ottenere quella informazione, che cerchi, mediante la scrittura di apposito codice.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #2 il: 28 Luglio 2015, 14:14:28 »
mi confondo con Visual basic
mannaggia a chi ha inventato punto e virgola....
"e il naufragar m'è dolce in questo mar"

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #3 il: 28 Luglio 2015, 14:35:06 »
si potrebbe fare così, (San Midi assolvimi)

Codice: gambas [Seleziona]
Public sub scopri_separatore() as string
   Dim a as float
   Dim b as string
   a=5/2
   b=str(a)
   return mid(b,2,1)
end


« Ultima modifica: 28 Luglio 2015, 15:03:51 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #4 il: 28 Luglio 2015, 14:45:40 »
« Ultima modifica: 28 Luglio 2015, 16:17:10 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #5 il: 28 Luglio 2015, 15:03:37 »
...se poi vuoi complicarti la vita....    :D

Codice: gambas [Seleziona]
Public sub scopri_separatore() as string

  Dim a As Float  
  Dim b As String
  Dim p As Pointer
  
   a = 5 / 7
   b = Str(a)  
   p = VarPtr(b)
  
' Dereferenziamo il Puntatore leggendo - come valore Byte - solo il 2° valore della originaria stringa.
' Quindi convertiamo quel valore di tipo Byte nel corrispettivo carattere ASCII:
   Return Chr(Byte@(p + 1))
    
End
« Ultima modifica: 28 Luglio 2015, 16:18:57 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #6 il: 28 Luglio 2015, 15:07:05 »
corretta la b
ma il metodo complicato ha qualche vantaggio in più su quello semplice o è solo più complicato?
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #7 il: 28 Luglio 2015, 16:17:53 »
ma il metodo complicato ha qualche vantaggio in più su quello semplice o è solo più complicato?

...usa semplicemente altre risorse.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #8 il: 28 Luglio 2015, 16:22:27 »
ma il metodo complicato ha qualche vantaggio in più su quello semplice o è solo più complicato?

...usa semplicemente altre risorse.
...e mostra le pontenzialità del linguaggio
Grazie
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #9 il: 28 Luglio 2015, 21:28:29 »
Ad ogni modo l'uso che hai fatto della funzione Str() è corretto ed opportuno, poiché la conversione, da essa effettuata, utilizza la corrente localizzazione per convertire numeri e date.



Sottopongo all'attenzione, per mera curiosità, una seconda possibilità utilizzando un paio di specifiche funzioni esterne della libreria /usr/include/locale.h :
Codice: gambas [Seleziona]
Library "libc:6"

Public Struct Lconv
  decimal_point As Pointer
  thousands_sep As Pointer
End Struct

Private Const LC_NUMERIC As Integer = 1

' char *setlocale (int __category, const char *__locale)
' Set and/or return the current locale.
Private Extern setlocale(category As Integer, locale As String) As Pointer

' struct lconv *localeconv(void)
' Return the numeric/monetary information for the current locale.
Private Extern localeconv() As Lconv


Public Sub Main()

  Dim lc As New Lconv
 
' Specifichiamo la categoria e l'ambiente dell'impostazione locale per lingua:
    setlocale(LC_NUMERIC, System.Language)
   
' Ritorna un Puntatore alla Struttura che dà informazioni sui simboli numerici secondo l'impostazione locale:
    lc = localeconv()
   
    With lc
      Print "- Impostazioni locali numeriche -\n\nSeparatore decimale:  "; String@(.decimal_point)
      Print "Separatore migliaia:  "; String@(.thousands_sep)
    End With

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: verificare impostazioni separatore decimale
« Risposta #10 il: 29 Luglio 2015, 11:03:12 »
Interessante
è l'occasione per conoscere meglio le librerie esterne
nel frattempo metto risolto, ma appena ho un po ti tempo sperimento le varie possibilità
un po si sente la mancanza di una funzione già integrata in gambas per questo problema
Il punto e la virgola creano malfunzionamenti imprevisti in localizzazioni diverse...mannaggia a loro

In ogni caso, una volta acquisita l'informazione si può memorizzarla in una variabile globale e nel corso del programma con l'aiuto di Replace sostituire il separatore decimale con quello corretto dove lo si usa.

« Ultima modifica: 29 Luglio 2015, 11:05:02 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[RISOLTO] Verificare impostazioni separatore decimale
« Risposta #11 il: 20 Aprile 2016, 15:24:28 »
.....oppure anche così:    ;D
Codice: [Seleziona]
Public Sub Main()

  Dim a As Float
  Dim bb As Byte[]

   a = 5 / 7
   bb = Byte[].FromString(Str(a))

   Print Chr(bb[1])

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »