La Web del Programador: Comunidad de Programadores
 
    Pregunta:  58608 - NUMEROS A LETRAS
Autor:  said jovanny
tengo un pequeño problema.
Estoy relizando un sistema y necesito comvertir sierta cantidad de numeros a letras Ejemplo:

11 -----> Once
5 -------> Cinco
2000 --> Dos Mil
etc.

  Respuesta:  Luis Felipe García Gutiérrez
pues bien... dicen que no debes dar el pescado, sino enseñar a pescar; no obstante haré una pequeña ecepción y pondré el código de la función tal y como opera.
Function NumALetras(Valor:Variant):String;

const
vUni:array[1..15] of string=('UN','DOS','TRES','CUATRO','CINCO','SEIS','SIETE','OCHO','NUEVE','DIEZ','ONCE','DOCE','TRECE','CATORCE','QUINCE');
vDec:array[1..9] of string=('DIECI','VEINTI','TREINTA','CUARENTA','CINCUENTA','SESENTA','SETENTA','OCHENTA','NOVENTA');
vCen:array[1..9] of string=('CIENTO','DOSCIENTOS','TRESCIENTOS','CUATROCIENTOS','QUINIENTOS','SEISCIENTOS','SETECIENTOS','OCHOCIENTOS','NOVECIENTOS');
var
nume,unid,dece,cent,mil,millo,cien:integer;
Linea:string;
begin
if valor=100 then
Linea:=' CIEN '
else
begin
Linea:='';
millo:=0;
mil:=0;
cien:=0;
dece:=0;
nume:=valor;
if nume>999999 then
begin
millo:=valor div 1000000;
nume:=nume-(millo*1000000);
if millo>0 then
begin
if millo>99 then
begin
cien:=millo div 100;
linea:=linea+vCen[cien]+' ';
nume:=millo-(cien*100);
if nume>15 then
begin
dece:=nume div 10;
nume:=nume-(dece*10);
linea:=linea+vDec[dece];
if nume>0 then
begin
if dece>2 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end
else
linea:=linea+' Y '+vUni[nume];
end
else
begin
if millo>15 then
begin
dece:=millo div 10;
nume:=millo-(dece*10);
linea:=linea+vDec[dece];
if nume>0 then
begin
if dece>2 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end
else
begin
if dece>0 then
linea:=linea+' Y '+vUni[millo]
else
linea:=linea+vUni[millo];
end;
end;
linea:=linea+' MILLONES ';
nume:=(valor-(millo*1000000))div 1000;
end;
end;
if ((millo=0) and (valor>999)) then
nume:=nume div 1000;
if ((nume>99)and(valor>999)) then
begin
cien:=nume div 100;
nume:=nume-(cien*100);
linea:=linea+vCen[cien]+' ';
end;
if ((nume>15)and(valor>999))then
begin
dece:=nume div 10;
nume:=nume-(dece*10);
linea:=linea+vDec[dece];
if nume>0 then
begin
if dece>2 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end
else
begin
if ((valor>999) and (nume>0)) then
begin
if dece>0 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end;
if valor>999 then
linea:=linea+' MIL ';
dece:=0;
nume:=StrtoInt(copy(InttoStr(valor),length(InttoStr(valor))-2,3));
if nume>99 then
begin
cien:=nume div 100;
nume:=nume-(cien*100);
linea:=linea+vCen[cien]+' ';
end;
if nume>15 then
begin
dece:=nume div 10;
nume:=nume-(dece*10);
linea:=linea+vDec[dece];
if nume>0 then
begin
if dece>2 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end
else
begin
if nume>0 then
begin
if dece>0 then
linea:=linea+' Y '+vUni[nume]
else
linea:=linea+vUni[nume];
end;
end;
end;
Result:=Linea;
end;

suerte y que le saquen gusto!