Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
Exclamation Error al convertir Edit a Integer

Buenas... Estoy aprendiendo delphi y pasa que haciendo una condicion me salta un error resaltandome el "Else" pero la verdad no se porque, espero que me puedan ayudar!!!

Cita:
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, suma : integer;
begin
if Edit1.Text = '' then
ShowMessage('Digite un valor');
else
Label3.caption := ('+');
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);
suma := a + b;
Edit3.Text := IntToStr(suma);
end;
Responder Con Cita
  #2  
Antiguo 19-04-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
cuando se coloca la parte else no se debe cerrar el then con ;. Si colocas ese ; el compilador lo interpreta como el fin del IF. Observa:

BIEN:

Código Delphi [-]
if (condición)
then sentencia
else sentencias;

MAL:

Código Delphi [-]
if (condicion)
then sentencia;
else sentencia;

Recuerda que cuando son 2 o más sentencias debe añadirse BEGIN-END. Naturalmente, si en el then debes colocar un begin-end a dicho end no se le debe finalizar con ; porque estarás en el mismo error.

Saludos,
PD: A estudiar la sintaxis y semántica de Pascal/Object Pascal
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 19-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
Muchas Gracias man, jajaja y muy efectiva tu respuesta...
me podrias elaborar un ejemplo porfavor de lo del begin-end??


SALU2

Última edición por 5TU4RT fecha: 19-04-2012 a las 22:54:31.
Responder Con Cita
  #4  
Antiguo 19-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
Ya arregle lo que me dijiste y me funciona muy bien...
pero ahora lo que pasa es lo siguiente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, suma : integer;
begin
if Edit1.Text = '' then
ShowMessage('Porfavor Digite un Valor')
else
Label3.caption := ('+');
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);
suma := a + b;
Edit3.Text := IntToStr(suma);
end;

Cuando el Edit1 no tiene nada y doy click al boton me sale un mensaje diciendo "porfavor digite un valor" y al darle en ok! al mensaje me aparece otro error!!!
no se porque!!!

Muchisimas Gracias...

Última edición por Casimiro Notevi fecha: 19-04-2012 a las 23:08:32.
Responder Con Cita
  #5  
Antiguo 19-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Y recuerda poner los tags al código fuente, ejemplo:




Saludos.
Responder Con Cita
  #6  
Antiguo 19-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
No lo habia leido man! Muchas Gracias =...

SALU2
Responder Con Cita
  #7  
Antiguo 19-04-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No dices el error que sale pero es de imaginar que la propiedad de alguno de los edits esta vacía o contiene texto.
Coloca un cero en la propiedad text de cada edit y esto:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, suma : integer;
begin
if Edit1.Text = '' then
begin
ShowMessage('Porfavor Digite un Valor');
Edit1.SetFocus;
end
else
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);
suma := a + b;
Edit3.Text := IntToStr(suma);
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 19-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
le modifique: le puse el begin y el end entre el then y el else como me pusiste! tamebien edite la propiedad de texto del Edit... pero me aparece aun este mensaje...
pero por lo que se entiende del mensaje va por ahi el rollo...

( no tengo permsos para poner imagenes )
http://img17.imageshack ---->>> http://us/img17/2558/errorhw.jpg
Gracias, Salu2

Última edición por Casimiro Notevi fecha: 20-04-2012 a las 00:00:52.
Responder Con Cita
  #9  
Antiguo 19-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola 5TU4RT.

Otra alternativa es:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b: integer;
begin
  if TryStrToInt(Edit1.Text, a) and TryStrToInt(Edit2.Text, b) then
    Edit3.Text:= IntToStr(a+b)
  else
    ShowMessage('Error: sin datos o no se ingresó un número entero')
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 20-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
esa seria una buena alternativa, pero ecfisa, hablando del c0de como yo ya lo tengo que seria lo que pasa??? porque me aparece ese error???

Muchas Gracias
Responder Con Cita
  #11  
Antiguo 20-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No puedo habrir el enlace. ¿Podrías copiar/pegar el mensaje de error ? (Ctrl+C para copiarlo y Ctrl+V para pegarlo aquí)

Pero pienso igual que mi amigo Caral, debe ser error de conversión...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 20-04-2012
5TU4RT 5TU4RT is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 8
Poder: 0
5TU4RT Va por buen camino
me aparece ('' is not a valid integer value)
Responder Con Cita
  #13  
Antiguo 20-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por 5TU4RT Ver Mensaje
me aparece ('' is not a valid integer value)
Exáctamente.

Como te dijo Caral más arriba el error es provocado por que el valor de un Edit es una cadena vacía.

Por el código que veo debe ser el valor de Edit2, deberías evaluarlo al igual que haces con Edit1:
Código Delphi [-]
  if (Edit1.Text = '')or(Edit2.Text = '') then 
  begin
    // Mensaje de error
    ...
Con TryStrToInt evitas esta excepción (además de algunas comprobaciones más que deberás hacer del otro modo)

Saludos.

Edito: Modifiqué el título original del hilo: "Ayuda con este error!!!" por otro más significativo a fín de facilitar las busquedas temáticas.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-04-2012 a las 01:07:45.
Responder Con Cita
  #14  
Antiguo 20-04-2012
Pedro-Juan Pedro-Juan is offline
Miembro
 
Registrado: ago 2006
Ubicación: Barcelona - España
Posts: 315
Poder: 18
Pedro-Juan Va por buen camino
Hola 5TU4RT

Por el código que veo en los edit sólo necesitas números enteros, con esto en el evento OnKeyPress del edit evitas que se introduzcan otros caracteres:

Código Delphi [-]
procedure Form.Edit1KeyPress(Sender: TObject; var Key: Char);
var cReturn: Char;
begin
cReturn := Key;
if ((Key <  #48)  or (Key > #57)) then Key := #0;
if (cReturn = #8) then Key := #8;
end;

Espero te sirva.

Un saludo.
__________________
Este mundo es el camino para el otro, que es morada sin cesar. Mas cumple tener buen tino para andar esta jornada sin errar. (J. Manrique)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir un tbitmap a integer sultan Gráficos 5 26-10-2008 20:41:56
¿Cómo convertir de word a integer? bluegene Varios 16 19-03-2007 22:31:18
convertir un integer en hh:mm:ss jmlifi SQL 1 02-11-2005 18:00:44
Convertir un String a Integer Rafe Varios 2 12-08-2005 17:43:38
convertir a integer acrophet Varios 1 03-11-2003 12:01:43


La franja horaria es GMT +2. Ahora son las 10:23:51.


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
Copyright 1996-2007 Club Delphi