Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   Varios (http://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Multiplicar un edit con separador de miles (http://www.clubdelphi.com/foros/showthread.php?t=78725)

rufo 11-05-2012 22:15:35

Multiplicar un edit con separador de miles
 
Hola amigos, buenas tardes, resulta que quiero hacer una operacion basica pero con numeros que tengan separador de miles (,) ya que he leido y buscado y dicen que ponga el punto, pero la cuestion es que no quiero que sea asi, espero que ustedes me puedan ayudar.

Les pongo parte de mi codigo en el cual estoy algo atorado y no paso de aqui

Código Delphi [-]
procedure TFACTURA.Memo2Change(Sender: TObject);
var
n1:real;
suma: Extended;
i : integer;
begin
 suma := 0;
 for i := 0 to memo2.Lines.Count - 1 do
 suma := suma + strToFloat(memo2.Lines[i]);
 edit8.Text := floatToStrF(suma,ffNumber,20,2);   
 v_conta:=v_conta+1;

 n1:=strtofloat(edit8.Text);
 edit9.Text:=formatfloat('0,00',n1*0.16);

De antemano gracias y solo quiero decirles que estoy usando delphi2007

marcoszorrilla 11-05-2012 22:36:23

Yo utilizo StringReplace:

Código Delphi [-]
procedure TfrBuscaFacturas.edImporteExit(Sender: TObject);
begin
  Try
  nCant:=StrToFloat(edImporte.text);
  sCant:=StringReplace(EdImporte.Text,',','.',[rfReplaceAll]);
  except
  ShowMessage('Cantidad incorrecta.');
  edImporte.text:='0';
  edImporte.SetFocus;
  end;

end;
Un Saludo.

rufo 12-05-2012 00:02:56

Gracias por responder pero no es lo que ando buscando, lo que en si quiero es que me multiplique con los numero que tiene separador de miles.

ecfisa 12-05-2012 00:15:56

Hola rufo.

Si el formato que estás queriendo utilizar es: [miles] , [cent_dec_uni] . [decimales], vas a tener que hacer algo similar al lo que te sugiere Marcos.

Probá de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Suma: Extended;
 i: integer;
 s: string;
 Sep: string[2];
begin
  Sep[1]:= ThousandSeparator;
  Sep[2]:= DecimalSeparator;
  DecimalSeparator:= '.';
  ThousandSeparator:= ',';
  Suma:= 0;
  for i:= 0 to Memo1.Lines.Count - 1 do
    suma := suma + StrToFloat(StringReplace(Memo1.Lines[i], ',' ,'' ,[rfIgnoreCase]));
  Edit1.Text:= FloatToStrF(Suma, ffNumber, 20, 2);
  //...
  ThousandSeparator:= Sep[1];
  DecimalSeparator:= Sep[2];
end;

Saludos.

rufo 12-05-2012 00:23:02

Ok gracias por responder en la suma no hay problema pero si quiero que el edit que ya tiene el valor en miles y le quiero multiplicar me manda error diciendome que no es un valor flotante, como se haria para multiplicar un valor con numeros expresado en miles, espero que me ayuden o me guien de antemano gracias.

Casimiro Notevi 12-05-2012 00:35:34

Creo que no has leido las respuestas de los compañeros, lo que quieres hacer no se puede, tienes que quitar las comas y puntos para poder operar con ellos ;)

ecfisa 12-05-2012 00:39:11

Hola rufo.

No me genera ningún inconveniente.

Por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Suma,n1: Extended;
 i: integer;
 s: string;
 Sep: string[2];
begin
  Sep[1]:= ThousandSeparator;
  Sep[2]:= DecimalSeparator;
  DecimalSeparator:= '.';
  ThousandSeparator:= ',';
  Suma:= 0;
  for i:= 0 to Memo1.Lines.Count - 1 do
    suma := suma + StrToFloat(StringReplace(Memo1.Lines[i],',','',[rfIgnoreCase]));
  Edit1.Text:= FloatToStrF(suma, ffNumber, 20, 2);

  
  n1:= 3.1415926 * StrToFloat(StringReplace(Edit1.Text,',','',[rfIgnoreCase])); // Multiplicar
  Edit2.Text:= FloatToStrF(n1, ffNumber, 20, 2);  // Mostrar

  //...
  ThousandSeparator:= Sep[1];
  DecimalSeparator:= Sep[2];
end;

Saludos.

Edito: Por supuesto que, como menciona Casimiro, sin quitar previamente las comas no es posible.

rufo 14-05-2012 19:41:22

Gracias amigo ecfisa tu ejemplo que me pusiste me sirvio de mucho ya me quedo listo.


La franja horaria es GMT +2. Ahora son las 06:14:25.

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