PDA

Ver la Versión Completa : Is not a valid integer value


joancmb
29-01-2013, 12:06:29
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

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:

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:

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
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:


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
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 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:

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.