Sumar en Delphi Con ListBox
Saludos, soy nuevo aqui y estoy estudiando delphi en la universidad, y ya me empezaron a poner algunos ejercicios, espero poder contar con su ayuda, al igual yo poder ayudarlo en temas que domino, con algunas preguntas que hagna.
lo que quiero es una suma que cuando seleccione un items del list box me haga la suma, resta, multiplicacion , división, y me muestre el resultado en un text. Este es mi diseño, solo falta aplicarle los codigo, me gustaria solo el ejemplo de la suma , de ahi haria los demas, ya tengo el codigo de salir y de limpiar h t t p : / / content.screencast.com/users/Raniel/folders/Jing/media/8b9f4356-66ac-40bd-abe4-52b09a14f35e/2010-10-25_0008.png pegar despues del h t t p : / / sorry es que no me permitia poner la imagen ni enlace debe ser porq soy nuevo... Un millon de Gracias |
Hola Ray16.
Primero la ayuda que pediste:
Segundo este código no hace ninguna comprobación de conversión. O sea que si pones '15' en el primer edit y 'abc' en el segundo, cuando realize la operación te dará error. También podrias agregar un else poniendo un mensaje de advertencia si algún edit esta vacío... queda en tus manos. ;) Nota: Si alterás el orden del ListBox (suma,resta, multiplicación, división) respetá el nuevo órden en la evaluación del case/of, si no podría suceder que 2 x 1 sea igual a 3... :) Saludos. :) |
Un millon de gracias, lo he hecho con numeros reales en vez de entero
lo tengo de esta forma y funcionan todas las operaciones... if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit case ListBox1.ItemIndex of 0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text)); 1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text)); 2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)); 3: ; solo me falta la división cuando la pongo me da error, me lo marca en rojo si lo ponga de esta forma : incluyendo la division... if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit case ListBox1.ItemIndex of 0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text)); 1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text)); 2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)); 3: edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text)); me marca esta ultima linea en rojo, y para la division por cero quiero validarlo de esta forma. if (numero2=0) then begin ShowMessage('Error Al Dividir entre cero'); end else begin hacer la division. Gracias por la ayuda Ecfisa, pude hacer las operaciones, ahora solo falta la division... Gracias!, |
Cita:
Otra cosa lo hice con un ComboBox y me funciona, como aplicaria la validacion al dividir entre cero procedure TForm1.ComboBox1Change(Sender: TObject); begin if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit case ComboBox1.ItemIndex of 0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text)); 1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text)); 2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text)); 3: edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text)); como adjuntaria ete codigo if (numero2=0) then begin ShowMessage('Error Al Dividir entre cero'); end else begin hacer division Mil gracias |
Cita:
Exacto, vos mismo te diste la respuesta, una forma de hacerlo podría ser:
Es igual hacerlo con la comprobación inversa tál como lo pusiste en el pseudocódigo: if StrToFloat(Edit2.Text) = 0 then, solamente cambia el órden de las acciones. Saludos. :) |
|
Un millon de Gracias, Los pude hacer y validar la división entre cero.
el profe solo pidio eso lo de validar en cero, lo de las letras no, pero ya lo haré para conocimiento. Gracias! Éxitos, seguimos en contactos... |
La franja horaria es GMT +2. Ahora son las 19:12:04. |
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