Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Error al convertir Edit a Integer (https://www.clubdelphi.com/foros/showthread.php?t=78437)

5TU4RT 19-04-2012 22:33:31

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;

Delphius 19-04-2012 22:44:44

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

5TU4RT 19-04-2012 22:50:27

Muchas Gracias man, jajaja y muy efectiva tu respuesta...
me podrias elaborar un ejemplo porfavor de lo del begin-end??


SALU2

5TU4RT 19-04-2012 23:02:08

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

Casimiro Notevi 19-04-2012 23:08:02

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.

5TU4RT 19-04-2012 23:17:57

No lo habia leido man! Muchas Gracias =...

SALU2

Caral 19-04-2012 23:19:45

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

5TU4RT 19-04-2012 23:54:41

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

ecfisa 19-04-2012 23:59:32

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.

5TU4RT 20-04-2012 00:09:49

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

ecfisa 20-04-2012 00:15:59

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.

5TU4RT 20-04-2012 00:33:49

me aparece ('' is not a valid integer value)

ecfisa 20-04-2012 00:49:01

Cita:

Empezado por 5TU4RT (Mensaje 430501)
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.

Pedro-Juan 20-04-2012 01:11:32

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.


La franja horaria es GMT +2. Ahora son las 12:30:06.

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