Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: doublemm - 17 Maggio 2010, 23:37:55

Titolo: [RISOLTO]conversione valuta
Inserito da: doublemm - 17 Maggio 2010, 23:37:55
c'è un modo per convertire un float in valuta? mi basterebbe anche solo un modo per scrivere il float in una label in formato valuta 1000.00 ---> € 1.000,00. Ciao grazie
Titolo: Re: conversione valuta
Inserito da: Golia - 17 Maggio 2010, 23:45:15
Puoi usare questa funzione fatta da fsurfing
Codice: [Seleziona]
PUBLIC SUB formtvaluta(stringa AS String) AS String

DIM p, p1, itemp, itemp1 AS Integer
DIM initstringa AS String

''''sostituzione o aggiunta della virgola

      IF InStr(stringa, ",") <> 0 THEN
          stringa = Replace(stringa, ",", ".")
      ENDIF     
      IF InStr(stringa, ".") <> 0 THEN
          stringa = Replace(stringa, ".", ",")
      ELSE
          stringa = stringa & ",00"
      ENDIF

'''''arrotondamento a due decimali


      p = InStr(stringa, ",")

      p1 = Len(stringa) - p

      initstringa = Left(stringa, p - 1)

      IF p1 = 2 THEN
          stringa = stringa
      ELSE IF p1 <= 1 THEN
          stringa = stringa & "0"
      ELSE IF p1 > 2 THEN
          itemp = CInt(Mid(stringa, p + 1, 2))
          itemp1 = CInt(Mid(stringa, p + 1 + 2, 1))
          IF itemp1 >= 5 THEN
              INC itemp
          ENDIF
          IF itemp = 100 THEN
              stringa = CString(CInt(initstringa) + 1) & ",00"
          ELSE
              stringa = initstringa & "," & CString(itemp)
          ENDIF
      ENDIF

'''''''''''aggiunta puntini ogni 1000     

      IF Len(stringa) >= 7 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 6)) & "." & Right(stringa, 6)
      ENDIF

      IF Len(stringa) >= 11 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 10)) & "." & Right(stringa, 10)
      ENDIF

      IF Len(stringa) >= 15 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 14)) & "." & Right(stringa, 14)
      ENDIF

      IF Len(stringa) >= 19 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 18)) & "." & Right(stringa, 18)
      ENDIF

RETURN stringa

END

Io l'ho messa in un modulo chiamato "Funzioni", poi nel form faccio cosi:
Codice: [Seleziona]
textbox1.Text = Funzioni.formtvaluta(prezzo)
Titolo: Re: conversione valuta
Inserito da: doublemm - 18 Maggio 2010, 00:02:11
ho aggiunto la funzione al modulo chiamo la funzione mandandogli la variabile da modificare
Codice: [Seleziona]
formtvaluta(tbianco)

se analizzo stringa prima di return
Codice: [Seleziona]
Message.Info(stringa, "OK")
RETURN stringa
la stringa è stata modificata ed è giusta, ma nella sub chiamante stringa prende valore FALSE. come si fa per mantenere il valore di stringa quando ritorna alla sub che ha chiamato la funzione?

Titolo: Re: conversione valuta
Inserito da: Ceskho - 18 Maggio 2010, 00:07:12
devi assegnare il valore restituito da quella funzione ad una variabile...

Immagina di avere una funzione di nome Funz che restituisce un intero....basta fare

Codice: [Seleziona]
DIM intero AS Integer

intero = Funz(parametro)

ed hai una variabile che come valore ha quello restituito dalla tua funzione
Titolo: Re: conversione valuta
Inserito da: doublemm - 18 Maggio 2010, 00:11:40
grazie risolto. Ogni tanto mi perdo in un bicchiere d'acqua.
Titolo: Re: conversione valuta
Inserito da: Ceskho - 18 Maggio 2010, 00:13:40
grazie risolto. Ogni tanto mi perdo in un bicchiere d'acqua.

È normale...siamo qui per questo....
Titolo: Re: [RISOLTO]conversione valuta
Inserito da: milio - 18 Maggio 2010, 03:16:13
@ Golia

Ma non era piu' semplice scrivere TextBox1.Text = Format(<tuo valore>,"$,0.00") ?  ;)
Titolo: Re: [RISOLTO]conversione valuta
Inserito da: Golia - 18 Maggio 2010, 13:15:27
Perchè proprio non la sapevo :D
Mi aveva incuriosito quel
Citazione
$,0.00
ma pensavo che lo avevi modificato tu per gridbox