Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Conversione di numeri in formato letterale

    Ciao a tutti,
    esiste in VB qualche funzione che dato un numero mi restituisce la sua rappresentazione letterale? (es. 6 -> "sei")

    Grazie
    Simone

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    Non penso propio.
    Però potresti farti una sub che te lo faccia.

    da 0 a 19 con dei controlli (if x = 1 then y= "uno")

    poi tutti i 20, 30, ...100....

    poi gli insegni tu... 23.... "venti" & "tre"
    ecc...

    E' piuttosto laborioso... se riesci a farlo mandami il codice

  3. #3
    ...speravo proprio di non doverla fare io, ma effettivamente non credo ci siano alternative...
    Penso che domani mi metterò sotto, poi ti faccio sapere.

    Grazie 1000!
    Simone

  4. #4
    secondo me ti conviene creare un array di stringhe
    e fai corrispondere il numero all' index
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    prova cosi

    codice:
    Option Explicit
    
    Option Base 1
    
    Dim Numeri_N(19) As String
    Dim Numeri_D(9)  As String
    Private Function Centinaia(Valore As Long) As String
       Dim Centinaio As Long
       Dim Lettere1  As String
       Dim Lettere2  As String
      
       Centinaio = Int(Valore / 100)
       Lettere1 = ""
       Lettere2 = ""
    
       If Centinaio > 0 Then
          If Centinaio = 1 Then
             Lettere1 = "cento"
          Else
             Lettere1 = Numeri_N(Centinaio) & "cento"
          End If
       End If
    
      Lettere2 = DecineUnita((Valore - (Centinaio * 100)))
    
      Centinaia = Lettere1 & Lettere2
    
    End Function
    Private Function DecineUnita(Valore As Long) As String
      Dim Decine   As Long
      Dim Unita    As Long
      Dim Lettere1 As String
      Dim Lettere2 As String
      '
      Decine = Int(Valore / 10)
      Unita = ((Valore / 10) - Int(Valore / 10)) * 10
      Lettere1 = ""
      Lettere2 = ""
      '
      If Valore > 0 Then
         If Valore < 20 Then
            Lettere1 = Numeri_N(Valore)
         Else
            Lettere1 = Numeri_D(Decine)
            If Unita <> 0 Then
               Lettere2 = Numeri_N(Unita)
            End If
         End If
      End If
      '
      DecineUnita = Lettere1 & Lettere2
      '
    End Function
    Function Inizializza()
       Numeri_N(1) = "uno"
       Numeri_N(2) = "due"
       Numeri_N(3) = "tre"
       Numeri_N(4) = "quattro"
       Numeri_N(5) = "cinque"
       Numeri_N(6) = "sei"
       Numeri_N(7) = "sette"
       Numeri_N(8) = "otto"
       Numeri_N(9) = "nove"
       Numeri_N(10) = "dieci"
       Numeri_N(11) = "undici"
       Numeri_N(12) = "dodici"
       Numeri_N(13) = "tredici"
       Numeri_N(14) = "quattordici"
       Numeri_N(15) = "quindici"
       Numeri_N(16) = "sedici"
       Numeri_N(17) = "diciassette"
       Numeri_N(18) = "diciotto"
       Numeri_N(19) = "diciannove"
       '
       Numeri_D(1) = "dieci"
       Numeri_D(2) = "venti"
       Numeri_D(3) = "trenta"
       Numeri_D(4) = "quaranta"
       Numeri_D(5) = "cinquanta"
       Numeri_D(6) = "sessanta"
       Numeri_D(7) = "settanta"
       Numeri_D(8) = "ottanta"
       Numeri_D(9) = "novanta"
    End Function
    Private Function MilioniMigliaia(Valore As Long) As String
       Dim Numero1  As Long
       Dim Numero2  As Long
       Dim Milioni  As Long
       Dim Migliaia As Long
       Dim Lettere1 As String
       Dim Lettere2 As String
       Dim Lettere3 As String
       
       Numero1 = Valore Mod 1000000
       Numero2 = Valore Mod 1000
       
       Milioni = Int(Valore / 1000000)
       Migliaia = Int(Numero1 / 1000)
       Lettere1 = ""
       Lettere2 = ""
       Lettere3 = ""
       
       If Valore < 1000000000 Then
          If Milioni = 0 Then
             Lettere1 = ""
          Else
             If Milioni = 1 Then
                Lettere1 = "unmilione"
             Else
                Lettere1 = Centinaia(Milioni) & "milioni"
             End If
          End If
          '
          If Migliaia = 0 Then
             Lettere2 = ""
          Else
             If Migliaia = 1 Then
                Lettere2 = "mille"
             Else
                Lettere2 = Centinaia(Migliaia) & "mila"
             End If
          End If
          Lettere3 = Centinaia(Numero2)
       Else
          Lettere1 = "Errore"
       End If
       
       MilioniMigliaia = Lettere1 & Lettere2 & Lettere3
       
    End Function
    Function NumeroToCarattere(Valore As Currency) As String
       Dim Intero   As Long
       Dim Decimale As Long
       Dim Diff     As Currency
       Dim Punto    As Long
       Dim Count    As Long
       Dim Lettere1 As String
       Dim Lettere2 As String
       Dim Lettere3 As String
    
       Intero = Int(Valore)
       Decimale = Int((Valore - Int(Valore)) * 10000)
       Diff = Valore - Int(Valore)
       Punto = InStr(Trim(Str(Valore)), ".")
       Lettere1 = ""
       Lettere2 = ""
       Lettere3 = ""
    
       If Decimale <> 0 Then
          Count = Len(Trim(Str(Decimale)))
          '
          Do While Count <= Len(Trim(Str(Decimale))) And Count <> 0
             If Mid(Trim(Str(Decimale)), Count, 1) = "0" Then
                Count = Count - 1
             Else
                Exit Do
             End If
          Loop
          '
          Decimale = Mid(Trim(Str(Decimale)), 1, Count)
          Count = Punto + 1
          '
          Do While Count <= Len(Trim(Str(Valore)))
             If Mid(Trim(Str(Valore)), Count, 1) = "0" Then
                Lettere2 = Lettere2 & "zero"
                Count = Count + 1
             Else
                Exit Do
             End If
          Loop
       End If
       '
       Lettere1 = MilioniMigliaia(Intero)
       '
       If Diff = 0 Then
          NumeroToCarattere = Lettere1
       Else
          Lettere3 = MilioniMigliaia(Decimale)
          '
          If Intero = 0 Then
             NumeroToCarattere = "zero virgola " & Lettere2 & Lettere3
          Else
             If Decimale = 0 Then
                NumeroToCarattere = Lettere1
             Else
                NumeroToCarattere = Lettere1 & " virgola " & Lettere2 & Lettere3
             End If
          End If
       End If
    
    End Function
    Private Sub Command1_Click()
       Label1.Caption = Text1.Text
       Label2.Caption = NumeroToCarattere(Text1.Text)
       Text1.Text = ""
    End Sub
    Private Sub Form_Load()
       Call Inizializza
    End Sub

  6. #6
    grazie!!!
    Direi che funziona alla perfezione!

    Ciao
    Simone

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.