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=85522)

djhairoflow 28-03-2014 05:42:51

is not a valid integer value
 
1 Archivos Adjunto(s)
is not a valid integer value ESTE ERROR ME LO DA CUANDO YO PONGO SOLO UN NUMERO EN UN EDIT Y CIERRO EL SHOWMESSAGE QUE COMO INDICO EN CL CODIGO QUE ME LO MUESTRE SI ALGUN EDIT ESTA VACIO Y CUANDO LO CIERRO ME MUESTRA ESE ERROR, QUE PODRIA SER , ESTE PROGRMAA ES UN BOLETIN DE NOTA QUE CALCULA PROMEDIO TIENE BARRA PROGRESIVA








procedure TForm1.Button2Click(Sender: TObject);
var
psuma, ssuma,tsuma,pmedia,smedia,tmedia,media1,media2,media3,media4,media5,media6,pp4,pp5,pp6,num1,num2,num 3,num4,num5,num6,num7
,num8,num9,num10,num11,num12,num13,num14,num15: integer;

begin
if(edit1.Text='') or (edit2.Text ='') or (edit3.Text='') or (edit4.Text ='') or (edit5.Text ='') or (edit6.Text ='') or (edit7.Text ='') or (edit8.Text ='') or (edit9.Text ='') or (edit10.Text='') or (edit11.Text ='') or (edit12.Text='') or (edit13.Text='') or (edit14.Text ='') or (edit15.Text ='') then
showmessage ('Los datos no están completos o son incorrectos')
else
begin
num1 :=strtoint (edit1.Text);
num2 :=strtoint (edit2.Text);
num3 :=strtoint (edit3.Text);
num4 :=strtoint (edit4.Text);
num5 :=strtoint (edit5.Text);
num6 :=strtoint (edit6.Text);
num7 :=strtoint (edit7.Text);
num8 :=strtoint (edit8.Text);
num9 :=strtoint (edit9.Text);
num10 :=strtoint (edit10.Text);
num11 :=strtoint (edit11.Text);
num12 :=strtoint (edit12.Text);
num13 :=strtoint (edit13.Text);
num14 :=strtoint (edit14.Text);
num15 :=strtoint (edit15.Text);
{Suma1}
psuma := num1 + num2 + num3 + num4 + num5;
Panel1.Caption := inttostr(psuma);

ssuma := num6 + num7 + num8 + num9 + num10;
panel2.Caption := inttostr (ssuma);

tsuma := num11 + num12 + num13 + num14 + num15;
panel3.Caption := inttostr(tsuma);


{Promedio 1}
pmedia := (num1 + num2 + num3 + num4 + num5) div 5;
panel4.Caption := inttostr(pmedia);

smedia := (num6 + num7 + num8 + num9 + num10) div 5;
panel5.Caption := inttostr(smedia);

tmedia := (num11 + num12 + num13 + num14 + num15) div 5;
panel6.Caption := inttostr(tmedia);

{Promedio2}
media1 := (num1 + num6 + num11)div 3 ;
if media1 < 3 then
panel7.Caption := 'Muy deficiente'
else
if( media1 <5) and (media1 >= 3) then
panel7.Caption := 'Insuficiente'
else
if media1 = 5 then
panel7.Caption := 'Suficiente'
else
if media1 = 6 then
panel7.Caption := 'Bien'
else
if (media1 < 9) and (media1 >= 7) then
Panel7.Caption := 'Notable'
else
if media1 > 8 then
panel7.Caption := 'Sobresaliente'
end;



begin
media2 := (num2 + num7 + num12)div 3 ;
if media2 < 3 then
panel8.Caption := 'Muy deficiente'
else
if( media2 <5) and (media2 >= 3) then
panel8.Caption := 'Insuficiente'
else
if media2 = 5 then
panel8.Caption := 'Suficiente'
else
if media2 = 6 then
panel8.Caption := 'Bien'
else
if (media2 < 9) and (media2 >= 7) then
Panel8.Caption := 'Notable'
else
if media2 > 8 then
panel8.Caption := 'Sobresaliente'
end;



begin
media3 := (num3 + num8 + num13)div 3 ;
if media3 < 3 then
panel9.Caption := 'Muy deficiente'
else
if( media3 <5) and (media3 >= 3) then
panel9.Caption := 'Insuficiente'
else
if media3 = 5 then
panel9.Caption := 'Suficiente'
else
if media3 = 6 then
panel9.Caption := 'Bien'
else
if (media3 < 9) and (media3 >= 7) then
Panel9.Caption := 'Notable'
else
if media3 > 8 then
panel9.Caption := 'Sobresaliente'
end;



begin
media4 := (num4 + num9 + num14)div 3 ;
if media4 < 3 then
panel10.Caption := 'Muy deficiente'
else
if( media4 <5) and (media4 >= 3) then
panel10.Caption := 'Insuficiente'
else
if media4 = 5 then
panel10.Caption := 'Suficiente'
else
if media4 = 6 then
panel10.Caption := 'Bien'
else
if (media4 < 9) and (media4 >= 7) then
Panel10.Caption := 'Notable'
else
if media4 > 8 then
panel10.Caption := 'Sobresaliente'
end;



begin
media5 := (num5 + num10 + num15)div 3 ;
if media5 < 3 then
panel11.Caption := 'Muy deficiente'
else
if( media5 <5) and (media5>= 3) then
panel11.Caption := 'Insuficiente'
else
if media5 = 5 then
panel11.Caption := 'Suficiente'
else
if media5 = 6 then
panel11.Caption := 'Bien'
else
if (media5 < 9) and (media5 >= 7) then
Panel11.Caption := 'Notable'
else
if media5 > 8 then
panel11.Caption := 'Sobresaliente'
end;




begin
pp4 := strtoint (panel4.Caption);
pp5 := strtoint (panel5.Caption);
pp6 := strtoint (panel6.Caption);

media6 := (pp4 + pp5 + pp6)div 3 ;
if media6< 3 then
panel12.Caption := 'Muy deficiente'
else
if( media6 <5) and (media6 >= 3) then
panel12.Caption := 'Insuficiente'
else
if media6 = 5 then
panel12.Caption := 'Suficiente'
else
if media6 = 6 then
panel12.Caption := 'Bien'
else
if (media6 < 9) and (media6 >= 7) then
Panel12.Caption := 'Notable'
else
if media6 > 8 then
panel12.Caption := 'Sobresaliente'
end;


{Barra de Pro}
begin
pb1.Position := media1 ;
pb2.Position := media2 ;
pb3.Position := media3 ;
pb4.Position := media4 ;
pb5.Position := media5 ;
pb6.Position := media6 ;

end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
edit7.Clear;
edit8.Clear;
edit9.Clear;
edit10.Clear;
edit11.Clear;
edit12.Clear;
edit13.Clear;
edit14.Clear;
edit15.Clear;
panel1.Caption := '';
panel2.Caption := '';
panel3.Caption := '';
panel4.Caption := '';
panel5.Caption := '';
panel6.Caption := '';
panel7.Caption := '';
panel8.Caption := '';
panel9.Caption := '';
panel10.Caption := '';
panel11.Caption := '';
panel12.Caption := '';
pb1.Position := 0;
pb2.Position := 0;
pb3.Position := 0;
pb4.Position := 0;
pb5.Position := 0;
pb6.Position := 0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

end.

ecfisa 28-03-2014 06:05:45

Hola djhairoflow, bienvenido a Club Delphi :)

Como es costumbre con los iniciados, te invito a que leas nuestra guía de estilo.

También te sugiero que cuando incluyas código en tus mensajes utilices TAG's como lo explica esta imágen:


Al hacer mas legible tu código, te ayudará a conseguir más respuestas ya que muchos no se tomarán la molestia de leerlo si está confuso.

Saludos y gracias por tu colaboración :)

ElKurgan 28-03-2014 08:13:06

Yo te aconsejaría hacer algo así:

Código Delphi [-]
 
if(edit1.Text='') or (edit2.Text ='') or (edit3.Text='') or (edit4.Text ='') 
or (edit5.Text ='') or (edit6.Text ='') or (edit7.Text ='') or (edit8.Text ='') 
or (edit9.Text ='') or (edit10.Text='') or (edit11.Text ='') or (edit12.Text='') 
or (edit13.Text='') or (edit14.Text ='') or (edit15.Text ='') then
begin
  showmessage ('Los datos no están completos o son incorrectos');
  exit;
end
else
begin
  ...

Me explico: Tras el "else begin" vienen las asignaciones a los números, y terminan con un end, que se supone que es el del "else". Ahora bien, inmediatamente después te pones a hacer cálculos y ahí si es posible que algún "edit" no tenga un número válido.

Otra opción es usar "StrToIntDef(Edit1.Text, 0)", ya que sesta función devuelve el valor indicado si no puede transformar la cadena a número. Eso para todos los campos de texto

Saludos

Ferrari 28-03-2014 15:20:57

Re:
 
Coincido con [ElKurgan] ya que sino sacas el proceso con el
Código Delphi [-]
exit
estas dejando correr el proceso sin importarte que falte algún numero por capturar...puedes validar también que te indique cual edit te falta por capturar y enviar el foco para que sea capturado.

cloayza 28-03-2014 18:49:30

Estimado djhairoflow, leo su post y quisiera si me lo permite indicarle algunos pequeños cambios que creo le serán de utilidad.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
psuma, ssuma,tsuma,pmedia,smedia,tmedia,media1,media2,media3,media4,media5,media6,pp4,pp5,pp6,num1,num2,num 3,num4,num5,num6,num7
,num8,num9,num10,num11,num12,num13,num14,num15: integer;

    {Esta función le entrega el concepto correspondiente a la nota de la evaluación
     así evita repetir este código...}
    function GetEvaluacion(value:Integer):string;
    begin
         if value < 3 then
             Result := 'Muy deficiente'
         else if( value <5) then
             Result := 'Insuficiente'
         else if value = 5 then
             Result := 'Suficiente'
         else if value = 6 then
             Result := 'Bien'
         else if (value < 9) then
             Result := 'Notable'
         else if value > 8 then
             Result := 'Sobresaliente'
    end;

begin
    if(edit1.Text='') or (edit2.Text ='') or (edit3.Text='') or (edit4.Text ='') or (edit5.Text ='') or (edit6.Text ='') or (edit7.Text ='') or (edit8.Text ='') or (edit9.Text ='') or (edit10.Text='') or (edit11.Text ='') or (edit12.Text='') or (edit13.Text='') or (edit14.Text ='') or (edit15.Text ='') then
    begin
         showmessage ('Los datos no están completos o son incorrectos');
         Exit;  //Corrección que ya le indicaron dos notables foristas como son ElKurgan y Ferrari...
    end
    else
    begin
         num1 :=strtoint (edit1.Text);
         num2 :=strtoint (edit2.Text);
         num3 :=strtoint (edit3.Text);
         num4 :=strtoint (edit4.Text);
         num5 :=strtoint (edit5.Text);
         num6 :=strtoint (edit6.Text);
         num7 :=strtoint (edit7.Text);
         num8 :=strtoint (edit8.Text);
         num9 :=strtoint (edit9.Text);
         num10 :=strtoint (edit10.Text);
         num11 :=strtoint (edit11.Text);
         num12 :=strtoint (edit12.Text);
         num13 :=strtoint (edit13.Text);
         num14 :=strtoint (edit14.Text);
         num15 :=strtoint (edit15.Text);
         {Suma1}
         psuma := num1 + num2 + num3 + num4 + num5;
         Panel1.Caption := inttostr(psuma);

         ssuma := num6 + num7 + num8 + num9 + num10;
         panel2.Caption := inttostr (ssuma);

         tsuma := num11 + num12 + num13 + num14 + num15;
         panel3.Caption := inttostr(tsuma);

         {Promedio 1}
         pmedia := (num1 + num2 + num3 + num4 + num5) div 5;
         panel4.Caption := inttostr(pmedia);

         smedia := (num6 + num7 + num8 + num9 + num10) div 5;
         panel5.Caption := inttostr(smedia);

         tmedia := (num11 + num12 + num13 + num14 + num15) div 5;
         panel6.Caption := inttostr(tmedia);

         media1 := (num1 + num6 + num11)div 3 ;
         media2 := (num2 + num7 + num12)div 3 ;
         media3 := (num3 + num8 + num13)div 3 ;
         media4 := (num4 + num9 + num14)div 3 ;
         media5 := (num5 + num10 + num15)div 3 ;
         media6 := (pmedia + smedia + tmedia) div 3 ;

         panel7.Caption :=GetEvaluacion(media1);
         panel8.Caption :=GetEvaluacion(media2);
         panel9.Caption :=GetEvaluacion(media3);
         panel10.Caption:=GetEvaluacion(media4);
         panel11.Caption:=GetEvaluacion(media5);
         panel12.Caption:=GetEvaluacion(media6);

         {Barra de Pro}
         pb1.Position := media1 ;
         pb2.Position := media2 ;
         pb3.Position := media3 ;
         pb4.Position := media4 ;
         pb5.Position := media5 ;
         pb6.Position := media6 ;
    end;
end;

Saludos cordiales


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

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