Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   sumar los valores de un listbox (https://www.clubdelphi.com/foros/showthread.php?t=73844)

rufo 19-05-2011 19:12:21

sumar los valores de un listbox
 
Hola amigos aqui con una pequeña espinita que traigo, resulta que quiero sumar los valores de un listbox y que me los muestre en un label pero me manda el siguiente error "Is not a valid floating point value" en el cual los valores que tengo en el listbox son valores separados con la coma y el punto es decir son cifras miles entonces ya viendo en el foro no encontre algo certero ya cambie mi configuracion regional y sigue el mismo error entonces queria ver si me echan una manita de favor, les anexo el codigo
Código:

procedure TREPORTES.Button9Click(Sender: TObject);
var
suma: Extended;
v_conta:integer;
begin
suma := 0;
      for i := 0 to listbox14.Items.Count - 1 do
      suma := suma + strToFloat(listbox14.Items[i]);
      label28.Caption := floatToStrF(suma,ffNumber,20,2);
      v_conta:=v_conta+1;
end;

Les comento que uso delphi 2007 y un sistema operativo de windows 7, de antemano gracias.

Casimiro Notevi 19-05-2011 19:18:45

Si he entendido bien, tienes los números con comas y puntos. Debes quitarlos.

rufo 19-05-2011 19:40:47

Gracias amigo por responder pero no quiero quitarlos ya que mi aplicacion me pide que tenga el resultado con comas y puntos.

ecfisa 19-05-2011 20:28:42

Hola rufo.

Lo que te sugiere Casimiro creo, es quitarlos para operar con ellos. No te altera para nada la muestra del resultado.
Supongamos (no lo especificas), que tu separador de miles es la coma y de decimales el punto.

Entonces sería:
Código Delphi [-]
procedure TForm1.Button9Click(Sender: TObject);
var
  aux: string;
  suma: Extended;
  v_conta: Integer;
  i: Integer;
begin
  DecimalSeparator:= '.';
  ThousandSeparator:= ',';
  suma := 0;
  for i := 0 to listbox14.Items.Count - 1 do
  begin
    aux:= ListBox14.Items[i];
    Delete(aux,Pos(',',aux),1);
    suma := suma + strToFloat(aux);
    Inc(v_conta);
  end;
  Label28.Caption := floatToStrF(suma,ffNumber,20,2);
end;
Fijate que la operación de borrado se hace sobre la variable auxiliar 'aux' y no afecta para nada el formato original.

Saludos.

rufo 19-05-2011 20:55:53

Aaaah ya es cierto lo que me comentaron ya quedo resuelto el problemilla y mil gracias por responder y ayudarme, saludos.


La franja horaria es GMT +2. Ahora son las 16:46:00.

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