Newsgroup: it.comp.lang.visual-basic
Titolo: Numeri

Esiste una routine che trasforma un numero in stringa che sia
veramente affidabile...
Es.:
12    -> dodici
1256 ->  milleduecentocinguantasei
Grazie
Antonio Tanzillo  
a...@netgroup.it
Marigliano (NA)  
www.netgroup.it/atsoft


Ciao Antonio.
Questo l'ho recuperato da un vecchio thread su Fidonet:
Per utilizzarlo con un controllo Text puoi fare una cosa del genere:
sub Text1_change()
dim s as string
if isnumeric(text1) then
	call lettere(clng(text1), s)
	label1 = a
endif
end sub
Con VB3 funziona. Spero che ti sia di aiuto.
--------------------CUT------CUT-------CUT---------------------
Sub lettere (x As Long, uscita As String)
Dim numero As String, terna As String, transito As String
des1(1) = "UNO"
des1(2) = "DUE"
des1(3) = "TRE"
des1(4) = "QUATTRO"
des1(5) = "CINQUE"
des1(6) = "SEI"
des1(7) = "SETTE"
des1(8) = "OTTO"
des1(9) = "NOVE"
des2(1) = "DIECI"
des2(2) = "VENTI"
des2(3) = "TRENTA"
des2(4) = "QUARANTA"
des2(5) = "CINQUANTA"
des2(6) = "SESSANTA"
des2(7) = "SETTANTA"
des2(8) = "OTTANTA"
des2(9) = "NOVANTA"
des3(1) = "UNDICI"
des3(2) = "DODICI"
des3(3) = "TREDICI"
des3(4) = "QUATTORDICI"
des3(5) = "QUINDICI"
des3(6) = "SEDICI"
des3(7) = "DICIASSETTE"
des3(8) = "DICIOTTO"
des3(9) = "DICIANNOVE"
uscita = ""
numero = Format$(Str$(x), "000000000")
terna = Left$(numero, 3)
If Val(terna) <> 0 Then
    If Val(terna) = 1 Then
        transito = "UNMILIONE"
    Else
        Call trasterna(terna, des1(), des2(), des3(), uscita)
        transito = "MILIONI"
    End If
    uscita = uscita & transito
End If
terna = Mid$(numero, 4, 3)
If Val(terna) <> 0 Then
    If Val(terna) = 1 Then
        transito = "MILLE"
    Else
        Call trasterna(terna, des1(), des2(), des3(), uscita)
        transito = "MILA"
    End If
    uscita = uscita & transito
End If
terna = Right$(numero, 3)
If Val(terna) = 0 Then
    GoTo fine
End If
Call trasterna(terna, des1(), des2(), des3(), uscita)
fine:
End Sub
Sub trasterna (terna As String, des1() As String, des2() As String,
des3() As String, uscita As String)
Dim a As Integer, p As Integer, b As Integer
Dim transito As String
If Left$(terna, 1) <> " " And Left$(terna, 1) <> "0" Then
    If Left$(terna, 1) <> "1" Then
        p = Val(Left$(terna, 1))
        transito = des1(p)
        uscita = uscita & transito
    End If
    transito = "CENTO"
    uscita = uscita & transito
End If
If Mid$(terna, 2, 1) <> " " And Mid$(terna, 2, 1) <> "0" Then
    If Mid$(terna, 2, 1) = "1" Then
        If Right$(terna, 1) <> "0" Then
            a = 1
            GoTo quadrato
        Else
            p = Val(Mid$(terna, 2, 1))
            transito = des2(p)
            uscita = uscita & transito
        End If
    Else
        p = Val(Mid$(terna, 2, 1))
        transito = des2(p)
        uscita = uscita & transito
    End If
End If
If Right$(terna, 1) = "0" Then
    GoTo ondina
Else
    GoTo asterisco
End If
asterisco:
If Right$(terna, 1) = "1" Then
GoTo aa
End If
If Right$(terna, 1) = "8" Then
GoTo aa
End If
GoTo quadrato
aa:
If Mid$(terna, 2, 1) = "0" Then
b = 1
End If
quadrato:
If a = 1 Then
p = Val(Right$(terna, 1))
transito = des3(p)
Else
p = Val(Right$(terna, 1))
transito = des1(p)
End If
uscita = uscita & transito
ondina:
If terna = " 10" Then
transito = "DIECI"
uscita = uscita & transito
End If
End Sub
--------------------CUT------CUT-------CUT---------------------
--
Ciao.
Massimiliano.
ma...@pinet.it