Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Is not a valid integer value (https://www.clubdelphi.com/foros/showthread.php?t=82551)

joancmb 29-01-2013 12:06:29

Suma del valores de radiogroupbutton
 
Buenos días a todos/as,
Estoy realizando una pequeña aplicación con una serie de radiogroupbutton, a los cuales les asigno un valor y necesito que el valor total de la suma de todos los valores de los radiogroupbutton aparesca en un tdedit, el caso es que no consiguo que me realice la suma, alguien se le ocurre como se podria realizar la suma.
Gracias.

jafera 29-01-2013 12:38:08

Puedes poner algo del código para ver lo que haces?

Los radiogroup tienen la propiedad onclick, que creo puedes usar para ver que itemindex has pulsado y desde ahí darle un valor.

Ejemplo

Código Delphi [-]
if dbradiogroup.itemindex=0 then
            Showmesage('Has pulsado el primer boton');

Espero te oriente

Josep

Casimiro Notevi 29-01-2013 16:46:37

¿Valores de un radiogroup? :confused:

ecfisa 29-01-2013 18:04:48

Hola joancmb.

Supongo que te refieres a un TRadioGroup, has escrito números en los strings de la propiedad Items y queres obtener la sumatoria.

Si es así, podrias hacer:
Código Delphi [-]
function SumarItemsRG(RG: TRadioGroup): Double;
var
  i: Integer;
begin
   Result:= 0;
   for i:= 0 to RG.Items.Count-1 do
     Result:= Result + StrToFloat(RG.Items[i]);
end;

LLamada ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= FloatToStr(SumarItemsRG(RadioGroup1));
end
Usé Double por que no sé que tipo estas empleando, pero si son valores enteros, puedes cambiar el tipo de retorno en la función SumarItemsRG.

Saludos.

joancmb 18-03-2013 12:16:04

Is not a valid integer value
 
Buenos días,
Estoy realizando una pequeña aplicación con una serie de radio button los cuales tienen un valor númerico i el resultado sale reflejado en un text, el codigo que utilizo es el siguiente:

Código Delphi [-]
unit eqt;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.jpeg, Vcl.ExtCtrls,
  Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask;

type
  TForm12 = class(TForm)
    Label2: TLabel;
    logo: TImage;
    Label7: TLabel;
    DBRadioGroup1: TDBRadioGroup;
    DBRadioGroup2: TDBRadioGroup;
    DBRadioGroup3: TDBRadioGroup;
    DBRadioGroup4: TDBRadioGroup;
    DBRadioGroup5: TDBRadioGroup;
    DBRadioGroup6: TDBRadioGroup;
    DBRadioGroup7: TDBRadioGroup;
    DBRadioGroup8: TDBRadioGroup;
    DBRadioGroup9: TDBRadioGroup;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure DBRadioGroup1Change(Sender: TObject);
    procedure DBRadioGroup2Change(Sender: TObject);
    procedure DBRadioGroup3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form12: TForm12;

implementation

{$R *.dfm}

procedure TForm12.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm12.DBRadioGroup1Change(Sender: TObject);
begin
  //showmessage(form12.DBRadioGroup1.Value);
  //showmessage(form12.DBRadioGroup2.Value);
  //form12.DBEdit1.Text := string(form12.DBRadioGroup1.Value) + string(form12.DBRadioGroup2.Value);
  //form12.DBEdit1.Text := IntToStr(TryStrToInt(form12.DBRadioGroup1.Value)+ StrToInt(form12.DBRadioGroup2.Value)+ StrToInt(form12.DBRadioGroup3.Value) + 
  //  StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value) + StrToInt(form12.DBRadioGroup7.Value)+ 
  //  StrToInt(form12.DBRadioGroup8.Value)+ StrToInt(form12.DBRadioGroup9.Value));
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value));
  end;

procedure TForm12.DBRadioGroup2Change(Sender: TObject);
begin
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup2.Value)+ StrToInt(form12.DBRadioGroup1.Value)+ StrToInt(form12.DBRadioGroup3.Value));
end;

procedure TForm12.DBRadioGroup3Change(Sender: TObject);
begin
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup3.Value)+ StrToInt(form12.DBRadioGroup1.Value)+ StrToInt(form12.DBRadioGroup2.Value));
end;

end.

Y cada vez que escojo un radio button me sale el siguiente mensaje: '''' is not valid integer value, en cambio me realiza la suma bien y el resultado aparece en el text, alguién se le ocurre que es lo que esta fallando.

Gracias.

Casimiro Notevi 18-03-2013 13:16:12

Que en todos estás añadiendo un strtoint que no sirve porque ya es un integer
Código Delphi [-]
StrToInt(form12.DBRadioGroup2.Value)
Sobra ese strtoint, ya que ese Value es un integer

Al González 18-03-2013 19:17:25

Más bien parece que esos form12.DBRadioGroupN.Value a veces son cadena vacía (''), y por eso te marca error la función StrToInt.

Si quieres convertir a entero una cadena que podría no representar un entero, puedes apoyarte en la función TryStrToInt (no sin modificar un poco tu código). ^\||/

joancmb 19-03-2013 09:32:42

Buenos días,
Realice un showmessage de los diferentes radio button i todos devuelven un numero, ninguno de ellos devuelve una cadena en blanco.

Si quito los StrToInt
Código Delphi [-]
form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
no se realiza la suma de los valores de los radio buttons, es decir, si escojo a tres radio button que su suma vale 5, así como pongo la instrucción de arriba el resultado es 122, no los suma los concatena.

No lo entiendo.

Se le ocurre a alguien alguna cosa.

Gracias.

Casimiro Notevi 19-03-2013 12:30:06

Cierto, .Value es un string, debes hacer el StrToInt.
El problema es el que te indica Al González, algún TDBRadioGroup no tiene asignado nada, por lo tanto es una cadena vacía.

joancmb 19-03-2013 14:10:58

Hola a todos y gracias por vuestra ayuda, aquí dejo la solución que he aplicado:
Código Delphi [-]
unit eqt;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.jpeg, Vcl.ExtCtrls,
  Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask, Unit2;

type
  TForm12 = class(TForm)
    Label2: TLabel;
    logo: TImage;
    Label7: TLabel;
    DBRadioGroup1: TDBRadioGroup;
    DBRadioGroup2: TDBRadioGroup;
    DBRadioGroup3: TDBRadioGroup;
    DBRadioGroup4: TDBRadioGroup;
    DBRadioGroup5: TDBRadioGroup;
    DBRadioGroup6: TDBRadioGroup;
    DBRadioGroup7: TDBRadioGroup;
    DBRadioGroup8: TDBRadioGroup;
    DBRadioGroup9: TDBRadioGroup;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure DBRadioGroup1Change(Sender: TObject);
    procedure DBRadioGroup2Change(Sender: TObject);
    procedure DBRadioGroup3Change(Sender: TObject);
    procedure DBRadioGroup4Change(Sender: TObject);
    procedure DBRadioGroup5Change(Sender: TObject);
    procedure DBRadioGroup6Change(Sender: TObject);
    procedure DBRadioGroup7Change(Sender: TObject);
    procedure DBRadioGroup8Change(Sender: TObject);
    procedure DBRadioGroup9Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form12: TForm12;

implementation

{$R *.dfm}

procedure TForm12.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm12.DBRadioGroup1Change(Sender: TObject);
begin
  //showmessage(form12.DBRadioGroup1.Value);
  //showmessage(form12.DBRadioGroup2.Value);
  //form12.DBEdit1.Text := string(form12.DBRadioGroup1.Value) + string(form12.DBRadioGroup2.Value);
  //form12.DBEdit1.Text := IntToStr(TryStrToInt(form12.DBRadioGroup1.Value)+ StrToInt(form12.DBRadioGroup2.Value)+ StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value) + StrToInt(form12.DBRadioGroup7.Value)+ StrToInt(form12.DBRadioGroup8.Value)+ StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value));
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
      form12.DBEdit1.Text := inttostr(strtoint(form12.DBRadioGroup1.Value) + strtoint(form12.DBRadioGroup2.Value) + strtoint(form12.DBRadioGroup3.Value) + strtoint(form12.DBRadioGroup4.Value) + strtoint(form12.DBRadioGroup5.Value) + strtoint(form12.DBRadioGroup6.Value) + strtoint(form12.DBRadioGroup7.Value) + strtoint(form12.DBRadioGroup8.Value) + strtoint(form12.DBRadioGroup9.Value));

  end;

procedure TForm12.DBRadioGroup2Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup2.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value) + StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value)+ StrToInt(form12.DBRadioGroup9.Value));
 // form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup3Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup3.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup4Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup4.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup5Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup5.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup6Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup4.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup7Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup7.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup8Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup8.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup4.Value) + StrToInt(form12.DBRadioGroup9.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

procedure TForm12.DBRadioGroup9Change(Sender: TObject);
begin
  if (form12.DBRadioGroup1.Value <> '') and (form12.DBRadioGroup2.Value <> '') and (form12.DBRadioGroup3.Value <> '') and (form12.DBRadioGroup4.Value <> '') and (form12.DBRadioGroup5.Value <> '') and (form12.DBRadioGroup6.Value <> '')and (form12.DBRadioGroup7.Value <> '') and (form12.DBRadioGroup8.Value <> '') and (form12.DBRadioGroup9.Value <> '') then
  form12.DBEdit1.Text := IntToStr(StrToInt(form12.DBRadioGroup9.Value)+ StrToInt(form12.DBRadioGroup1.Value) + StrToInt(form12.DBRadioGroup2.Value) + StrToInt(form12.DBRadioGroup3.Value) + StrToInt(form12.DBRadioGroup5.Value) + StrToInt(form12.DBRadioGroup6.Value)+ StrToInt(form12.DBRadioGroup7.Value) + StrToInt(form12.DBRadioGroup8.Value) + StrToInt(form12.DBRadioGroup4.Value));
  //form12.DBEdit1.Text := form12.DBRadioGroup1.Value + form12.DBRadioGroup2.Value + form12.DBRadioGroup3.Value;
end;

end.

Gracias por vuestra ayuda.


La franja horaria es GMT +2. Ahora son las 09:08:59.

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