Conversione Cifre In Lettere in LotusSCript.

TIPS DEVELOPERS

  • 2 commenti
Conversione Cifre In Lettere in LotusSCript.
Questo codice importato in un' agent permette di convertire in lettere qualsiasi valore numerico (double).

'SBAgent:

Option Public
Option Explicit

Public Unità(0 To 20) As String
Public Decine(0 To 9) As String
Public Esp(1 To 9) As String
Public fatto As Boolean
Public Function NumLettere(n As Double) As String
'Barbieri Fabio (Milano)

Dim resto As Double
Dim centinaia As Double
Dim Ordine As Integer
Dim StrN As String
Dim Decina As String
Dim cestr As String
Dim migliaia As String
Dim restomilioni As Double
Dim numfin As Double
Dim restomiliardi As Double
Dim miliardi As String
Dim milioni$

Call inizializza
NumLettere = ""

If n = 0 And fatto = False Then NumLettere = "zero": Exit Function
fatto = True
If n < 20 Then NumLettere = Unità(n): Exit Function
StrN = Trim(Str(n))
Ordine = Len(Trim(Str(n)))
'unità
numfin = Cdbl(Right(StrN, 2))
If numfin <= 19 Then
NumLettere = NumLettere(numfin)
Else
NumLettere = NumLettere(Cdbl(Right(StrN, 1)))
'decine
StrN = Trim(Str(n - Cdbl(Right(StrN, 1))))
Decina = Decine(Cdbl(Right(StrN, 2)) / 10)
If (NumLettere = "uno" Or NumLettere = "otto") And Decina <> "" Then Decina = Left(Decina, Len(Decina) - 1)
NumLettere = Decina & NumLettere
End If
centinaia = (Cdbl(StrN) - Cdbl(Right(StrN, 2))) / 100
If centinaia = 0 Then Exit Function
If centinaia <= 9 Then
If centinaia > 1 Then
cestr = NumLettere(centinaia) & Esp(2)
Else
cestr = Esp(2)
End If
Else
resto = Left(Trim(Str(centinaia)), Len(Trim(Str(centinaia))) - 1)
centinaia = Right(Trim(Str(centinaia)), 1)


If centinaia > 1 Then cestr = NumLettere(centinaia) & Esp(2)
If centinaia = 1 Then cestr = Esp(2)
If resto <= 999 And resto > 0 Then
If resto = 1 Then
migliaia = Esp(3)
Else
migliaia = Left(NumLettere(resto) & Esp(3), Len(NumLettere(resto) & Esp(3)) - 2) & "a"
End If
Else
restomilioni = Cdbl(Left(Trim(Str(resto)), Len(Trim(Str(resto))) - 3))
If restomilioni = 1 Then
milioni = "un" & Esp(6)

migliaia = NumLettere(Cdbl(Right(Trim(Str(resto)), Len(Trim(Str(resto))) - 1))) & "mila"

Else
If restomilioni <= 999 And restomilioni > 0 Then
milioni = NumLettere(restomilioni) & "milioni"
Else
restomiliardi = Cdbl(Left(Trim(Str(restomilioni)), Len(Trim(Str(restomilioni))) - 3))
End If
If restomiliardi = 1 Then
miliardi = "un" & Esp(9)

restomilioni = Cdbl(Right(Trim(Str(restomilioni)), 3))
If restomilioni = 1 Then
milioni = "un" & Esp(6)
Else
If restomilioni <= 999 And restomilioni > 0 Then milioni = NumLettere(restomilioni) & "milioni"
End If
Else
If restomiliardi > 0 Then
miliardi = NumLettere(restomiliardi) & "miliardi"
restomilioni = Cdbl(Right(Trim(Str(restomilioni)), 3))
If restomilioni = 1 Then
milioni = "un" & Esp(6)
Else
If restomilioni <= 999 And restomilioni > 0 Then milioni = NumLettere(restomilioni) & "milioni"
End If
End If
End If

resto = Cdbl(Right(Trim(Str(resto)), 3))
If resto <> 0 Then migliaia = Left(NumLettere(resto) & Esp(3), Len(NumLettere(resto) & Esp(3)) - 2) & "a"
End If
End If
End If


If migliaia = "mila" Then migliaia = ""
NumLettere = miliardi & milioni & migliaia & cestr & NumLettere

Exit Function
End Function
Public Function NumeroCaso(inf As Double, sup As Double) As Double
'Barbieri Fabio (Milano)
Randomize
NumeroCaso = Int(((sup) * Rnd) + inf)

End Function
Public Function eliminadoppie(strnum As String) As String
'Barbieri Fabio (Milano)
Dim i As Integer
Dim lettera1 As String * 1
Dim lettera2 As String * 1

For i = 1 To (Len(strnum) - 1)
lettera1 = Right(Left(strnum, i), 1)
lettera2 = Right(Left(strnum, i + 1), 1)
If (lettera1 = "a" Or lettera1 = "o" Or lettera1 = "e" Or lettera1 = "i" Or lettera1 = "u") And (lettera2 = lettera1) Then strnum = Left(strnum, i - 1) & Right(strnum, Len(strnum) - i): eliminadoppie = eliminadoppie(strnum): Exit Function
Next i

eliminadoppie = strnum
If Len(strnum) > 4 And Instr(1, strnum, "zero") <> 0 Then
strnum = Left(strnum, Len(strnum) - 4)
eliminadoppie = strnum
End If

End Function
Public Sub inizializza()
'Barbieri Fabio (Milano)

Unità(0) = ""
Unità(1) = "uno"
Unità(2) = "due"
Unità(3) = "tre"
Unità(4) = "quattro"
Unità(5) = "cinque"
Unità(6) = "sei"
Unità(7) = "sette"
Unità(8) = "otto"
Unità(9) = "nove"
Unità(10) = "dieci"
Unità(11) = "undici"
Unità(12) = "dodici"
Unità(13) = "tredici"
Unità(14) = "quattordici"
Unità(15) = "quindici"
Unità(16) = "sedici"
Unità(17) = "diciassette"
Unità(18) = "diciotto"
Unità(19) = "diciannove"
Decine(0) = ""
Decine(1) = "dieci"
Decine(2) = "venti"
Decine(3) = "trenta"
Decine(4) = "quaranta"
Decine(5) = "cinquanta"
Decine(6) = "sessanta"
Decine(7) = "settanta"
Decine(8) = "ottanta"
Decine(9) = "novanta"
Esp(1) = "dieci"
Esp(2) = "cento"
Esp(3) = "mille"
Esp(4) = "mila"
Esp(5) = "mila"
Esp(6) = "milione"
Esp(7) = "milioni"
Esp(8) = "milioni"
Esp(9) = "miliardo"
End Sub

Sub Initialize
'Barbieri Fabio (Milano)
Msgbox NumLettere( 13456 )

End Sub

Fabio Barbieri
www.barbieri.da.ru

2 Commenti:

  • #1 Marco Silingardi 12/21/2005 12:21:19 PM

    Grande Fabio, davvero interessante!

  • #2 bb 12/21/2005 11:17:09 AM

    6 troppo un figo!!!

Commenta articolo
 

Questo spazio web è stato creato da per un uso pubblico e gratuito. Qualsiasi tipo di collaborazione sarà ben accetta.
Per maggiori informazioni, scrivete a info@dominopoint.it

About Dominopoint
Social
Dominopoint social presence: