Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   CurrToStr sin coma ni puntos (https://www.clubdelphi.com/foros/showthread.php?t=85834)

marilinspi 13-05-2014 16:22:06

CurrToStr sin coma ni puntos
 
Hola a todos, he buscado y buscado pero no lo encuentro o no existe una función que me convierta un Currency a String pero sin puntos ni comas ej. 1.195,60 a '119560' al darse por entendido que los dos últimos dígitos son los decimales, ya que un aplicativo del SIAP lo requiere así, si alguien sabe del tema, agradeceré su ayuda.

Casimiro Notevi 13-05-2014 17:00:07

Siempre puedes crear tú mismo una sencilla función que los quite.

nlsgarcia 13-05-2014 19:14:07

marilinspi,

Cita:

...una función que me convierta un Currency a String...ej. 1.195,60 a '119560'...
La función en Delphi que convierte un número de coma flotante (Single, Double, Extended, Currency) a String es FloatToStr.

Lo que tu requerimiento sugiere es una función que elimine el formato numérico (Separador de miles y decimales) de un string numérico formateado.

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function NumberToString(Number : String) : String;
var
   SL : TStringList;
   i : Integer;
begin
   SL := TStringList.Create;
   ExtractStrings([',','.'], [], PChar(Number), SL);
   for i := 0 to SL.Count - 1 do
      Result := Result + SL[i];
   SL.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   Number : String;
begin
   Number := '1.234.567.890,99';
   ShowMessage(NumberToString(Number)); // Muestra : 123456789099
end;

end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32, convierte un número formateado (String numérico con separador de miles y decimales) en su equivalente sin formato.

Espero sea útil :)

Nelson.

roman 13-05-2014 19:55:19

¿Qué tal algo así?

Código Delphi [-]
function ImprimeCurrency(C: Currency): String;
begin
  Result := IntToStr(Trunc(100*C));
end;

O bien, si necesitas redondeo:

Código Delphi [-]
uses Math;

function ImprimeCurrency(C: Currency): String;
begin
  C := RoundTo(C, -2);
  Result := IntToStr(Trunc(100*C));
end;

// Saludos

ecfisa 13-05-2014 19:59:02

Hola marilinspi.

Otra opción para quitar los signos:
Código Delphi [-]
function UnformatCurr(const CurrStr: string): string;
begin
  Result:= StringReplace(CurrStr, '$', '',[rfReplaceAll]);
  Result:= StringReplace(Result, '.', '',[rfReplaceAll]);
  Result:= StringReplace(Result, ',', '',[rfReplaceAll]);
end;

Ejemplo de uso:
Código Delphi [-]
  ShowMessage(UnformatCurr('$ 2.500.317,25')); // Resultado:  250031725

Saludos :)

nlsgarcia 13-05-2014 20:17:17

marilinspi,

Cita:

...una función que me convierta un Currency a String...ej. 1.195,60 a '119560'...
Otra forma :rolleyes: :
Código Delphi [-]
function NumberToString(Number : String) : String;
var
   i : Integer;
begin
   for i := 1 to Length(Number) do
      if Number[i] in ['0'..'9'] then
         Result := Result + Number[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   Number : String;
begin
   Number := '1.234.567.890,99';
   ShowMessage(NumberToString(Number)); // Muestra : 123456789099
end;
Espero sea útil :)

Nelson.

marilinspi 13-05-2014 22:40:59

hola, gracias a todos por sus respuestas... lo resolví así
Código Delphi [-]
StringReplace((CurrToStrF(Percepcion,ffFixed,2)), '.', '', [rfReplaceAll])
Gracias

ecfisa 13-05-2014 23:51:47

Cita:

Empezado por marilinspi (Mensaje 476374)
hola, gracias a todos por sus respuestas... lo resolví así
Código Delphi [-]
StringReplace((CurrToStrF(Percepcion,ffFixed,2)), '.', '', [rfReplaceAll])
Gracias

Hola marilinspi.

Me alegra que lo hayas solucionado y de forma simple. :)

Solo quería agregar que ese código, dependiendo del valor que tengas definido como separador decimal, puede no dar solución a lo que solicitabas en el primer mensaje.

Mejor es:
Código Delphi [-]
   StringReplace((CurrToStrF(Percepcion,ffFixed,2)), DecimalSeparator, '', [rfReplaceAll]);

Saludos :)

marilinspi 14-05-2014 14:19:13

Gracias Ecfisa, muy buena tu sugerencia...


La franja horaria es GMT +2. Ahora son las 06:56:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi