Delphi - convertir cantidad numerica en texto

 
Vista:

convertir cantidad numerica en texto

Publicado por antonio (75 intervenciones) el 18/05/2013 18:41:32
Tengo un programa de Facturas que necesito convertir la cantidad numérica total en texto, si alguien se sabe el código, se lo agradezco.
saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

convertir cantidad numerica en texto

Publicado por nombre (484 intervenciones) el 26/05/2013 20:27:15
En trucomanía estaba hace años.
En el Club Delphi es probable que también esté.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

convertir cantidad numerica en texto

Publicado por Victor rafael (7 intervenciones) el 12/06/2013 20:19:25
SALUDOS ANTONIO...

TIENES QUE CREAR DOS CAMPOS EN LA TABLA
UNO SE PUEDE LLAMAR (MONTO) DONDE VA A INTRODUCIR LOS VALORES
Y EL OTRO SE PUEDE LLAMAR (CANTIDAD_LETRAS) DONDE VA ALMACENAR LA CANTIDAD EN LETRAS...

ESTA FUNCION LO HACE EXCELENTE...

Function CantidadEnLetra(curCantidad: Currency; MonNal: integer): String;
var i: integer;
Cantidad, Centavos: Currency;
BloqueCero, NumeroBloques, Digito: Byte;
PrimerDigito, SegundoDigito, TercerDigito: Byte;
Resultado, Temp, strCentavos, Bloque: String;
Unidades: Array[0..28] of String;
Decenas: Array[0..8] of String;
Centenas: Array[0..8] of String;
begin

Unidades[0] := 'UN'; Unidades[1] := 'DOS'; Unidades[2] := 'TRES'; Unidades[3] := 'CUATRO';
Unidades[4] := 'CINCO'; Unidades[5] := 'SEIS'; Unidades[6] := 'SIETE'; Unidades[7] := 'OCHO';
Unidades[8] := 'NUEVE'; Unidades[9] := 'DIEZ'; Unidades[10] := 'ONCE'; Unidades[11] := 'DOCE';
Unidades[12] := 'TRECE'; Unidades[13] := 'CATORCE'; Unidades[14] := 'QUINCE'; Unidades[15] := 'DIESISEIS';
Unidades[16] := 'DIESISIETE'; Unidades[17] := 'DIESIOCHO'; Unidades[18] := 'DIESINUEVE';
Unidades[19] := 'VEINTE'; Unidades[20] := 'VEINTIUNO'; Unidades[21] := 'VEINTIDOS';
Unidades[22] := 'VEINTITRES'; Unidades[23] := 'VEINTICUATRO'; Unidades[24] := 'VEINTICINCO';
Unidades[25] := 'VEINTISEIS'; Unidades[26] := 'VEINTISIETE'; Unidades[27] := 'VEINTIOCHO'; Unidades[28] := 'VEINTINUEVE';

Decenas[0] := 'DIEZ'; Decenas[1] := 'VEINTE'; Decenas[2] := 'TREINTA'; Decenas[3] := 'CUARENTA';
Decenas[4] := 'CINCUENTA'; Decenas[5] := 'SESENTA'; Decenas[6] := 'SETENTA'; Decenas[7] := 'OCHENTA'; Decenas[8] := 'NOVENTA';

Centenas[0] := 'CIENTO'; Centenas[1] := 'DOSCIENTOS'; Centenas[2] := 'TRESCIENTOS'; Centenas[3] := 'CUATROCIENTOS';
Centenas[4] := 'QUINIENTOS'; Centenas[5] := 'SEISCIENTOS'; Centenas[6] := 'SETECIENTOS'; Centenas[7] := 'OCHOCIENTOS'; Centenas[8] := 'NOVECIENTOS';

Cantidad := Trunc(curCantidad);
Centavos := (curCantidad - Cantidad) * 100;
NumeroBloques := 1;
Repeat
PrimerDigito := 0;
SegundoDigito := 0;
TercerDigito := 0;
Bloque := '';
BloqueCero := 0;
For i := 1 To 3 do begin
Digito := Round(Cantidad) Mod 10;
If Digito <> 0 Then begin
Case i of
1: begin
Bloque := ' ' + Unidades[Digito - 1];
PrimerDigito := Digito;
end; //case 1
2: begin
If Digito <= 2 Then begin
Bloque := ' ' + Unidades[(Digito * 10 + PrimerDigito - 1)];
end Else begin
If PrimerDigito <> 0 then
Temp := ' Y' else Temp := '';
Bloque := ' ' + Decenas[Digito - 1] + Temp + Bloque;
End; //if
SegundoDigito := Digito;
end; //case 2
3: begin
If (Digito = 1) and (PrimerDigito = 0) and (SegundoDigito = 0) then
Temp := 'CIEN' else Temp := Centenas[Digito-1];
Bloque := ' ' + Temp + Bloque;
TercerDigito := Digito;
end; //case 3
End; //case
end Else begin
BloqueCero := BloqueCero + 1;
End; // If Digito <>0
Cantidad := Int(Cantidad / 10);
If Cantidad = 0 Then begin
Break;
End; // If Cantidad=0
end; //for
Case NumeroBloques of
1:
Resultado := Bloque;
2: begin
if BloqueCero = 3 then
Temp := '' else Temp := ' MIL';
Resultado := Bloque + Temp + Resultado;
end; //case 2
3: begin
If (PrimerDigito = 1) and (SegundoDigito = 0) and (TercerDigito = 0) then
Temp := ' MILLON' else Temp := ' MILLONES';
Resultado := Bloque + Temp + Resultado;
end; //case 3
End; //case
NumeroBloques := NumeroBloques + 1;
Until Cantidad = 0; //repeat
case MonNal of
0: begin
If curCantidad > 1 then
Temp := ' CENTAVOS ***' else Temp := ' CENTAVO ***';
CantidadEnLetra := Resultado + Temp;

end;
1: begin
If curCantidad > 1 then
Temp := ' PESOS ' else Temp := ' PESO ';
if Centavos=0 then strCentavos := '' else strCentavos := 'CON '+CantidadEnLetra(Centavos, 0);
CantidadEnLetra := '***' + Resultado + Temp + strCentavos + '***';
end;
2: begin
If curCantidad > 1 then
Temp := ' DLLS ' else Temp := ' DOLAR ';
if Centavos=0 then strCentavos := '' else strCentavos := 'CON '+CantidadEnLetra(Centavos, 0);
CantidadEnLetra := '***' + Resultado + Temp + strCentavos;
end;
end;
End;

Function strFormatDecimal(strNum: String): String; // FUNCIÓN PARA AGREGAR UNA COMA Y EVITAR EL ERROR DE EXCEPCION
begin
if (AnsiPos('.', strNum) <> 0) then
strNum := Copy(strNum, 0, AnsiPos('.', strNum)-1) + ',' +
Copy(strNum, AnsiPos('.', strNum) + 1, Length(strNum)-AnsiPos('.', strNum));
if strNum = '' then strNum := '0';
strFormatDecimal := strNum;
end;


EN EL CAMPO DONDE INTRODUCE EL MONTO, BUSCA EL EVENTO QUE DICE ONEXIT Y PONLE ESTA SENTENCIA, INCLUYENDO EL NOMBRE DE LA TABLA PRIMERO..

TABLA.fieldbyname('valor_letras').asstring := CantidadEnLetra(vale.fieldbyname('valor').asfloat , 1);


ESPERO RESUELVA CON ESTO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

convertir cantidad numerica en texto

Publicado por wilfredo (1 intervención) el 08/11/2013 14:01:15
hola quisiera q me ayuden amas detallada mente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar