Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola egostar
Nuevamente intente con el codigo, tiene mucha logica, pero en el caso de las sumas no funciona bien, el resto si, no se a que se debe.
Puedes probarlo ?
Saludos
Responder Con Cita
  #2  
Antiguo 15-11-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
He cambiado el codigo de egostar en el caso del Case Of por if then y funciona, no se la razon ?.
Aqui esta el cambio:
http://rapidshare.com/files/3481388/...lices.zip.html
Evento modificado por egostar, Button2Click, queda grabado.
Gracias egostar por el aporte
Saludos
Responder Con Cita
  #3  
Antiguo 15-11-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.561
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caral
He cambiado el codigo de egostar en el caso del Case Of por if then y funciona, no se la razon ?.
Bueno, el asunto de porque la suma no funciona correctamente es porque al inicio el ComboBox3.ItemIndex tiene un valor de -1, como no has cambiado el ComboBox3.Text este valor no lo reconoce como 0 que en realidad es el ItemIndex de Sumar, lo que hice es lo siguiente:

Código Delphi [-]
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Clear;
  Edit2.Clear;
  ComboBox3.ItemIndex := 0; // esto inicializa el combobox3 a 0
  TabSheet2.Caption:= 'Practicas de Sumas';
end;

Con esto ya debe de funcionar como lo soñe

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 15-11-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno, no he cambiado todavia tu opcion egostar, para que quede como la soñaste , pero hice varios cambios.
seoane, espero te guste asi, creo que es mas grafico como dijiste y la verdad se ve mucho mas de maestro, se nota tu mano.
Aqui estan los cambios, revisenlos por favor.
http://rapidshare.com/files/3499529/...lices.zip.html
Me dicen que tal.
Saludos
Responder Con Cita
  #5  
Antiguo 15-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Caral,

Le he echado un ojo a tu programa feliz . Para empezar me concentré en el Button3Click, el que comprueba las respuestas de la segunda ficha.

Tienes muchas parejas de sentencias del tipo

Código:
if ESTO = AQUELLO then
  TalCosa;

if ESTO <> AQUELLO then
  OtraCosa;
¿por qué no lo simplificas:

Código:
if ESTO = AQUELLO then
 TalCosa
else
  OtraCosa;
Pero más aún: fíjate que en esas sentencias lo que hace es fijar un rótulo de acuerdo a si la respuesta es o no correcta. Y sólo hay dos posibles rótulos: 'X' y 'OK'.

'X' se pone si la respuesta es incorrecta, o, dicho de otra forma, si la comparacion

ESTO = AQUELLO

es falsa, y 'OK' se pone si esta comparación es verdadera. En resumen, el rótulo que uses depende de un valor booleano. Entonces puedes hacer esto:

Código Delphi [-]
const
  strRespuestas = array[Boolean] of String = ('X', 'OK');

al principio del procedimiento. strRespuestas es un arreglo de dos elementos:

Código:
false => 'X'
true => 'OK'
Entonces, los condicionales

Código Delphi [-]
if Edit3.Text = Edit4.Text then
  Label4.Caption := 'OK';

if Edit3.Text <> Edit4.Text then
  Label4.Caption := 'X';

la puedes simplificar a una sóla línea:

Código Delphi [-]
Label4.Caption := strRespuestas[Edit3.Text = Edit4.Text];

Aplicas la misma técnica al final de ese evento, donde asignas los colores, y en total reduces el código en aproximadamente 100 líneas


Por otro lado, creo que Neftali ya lo dijo. Urge cambiar nomenclatura.

// Saludos
Responder Con Cita
  #6  
Antiguo 15-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otro punto:

Si haces lo del mensaje anterior, te queda algo como:

Código Delphi [-]
if ComboBox3.Text = 'Sumar' then
begin
  Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));
  Label4.Caption := strRespuestas[Edit3.Text = Edit4.Text];

  Edit6.Text := FloatToStr(StrToFloat(ComboBox6.Text) + StrToFloat(ComboBox7.Text));
  Label5.Caption := strRespuestas[Edit5.Text = Edit6.Text];

  Edit8.Text := FloatToStr(StrToFloat(ComboBox8.Text) + StrToFloat(ComboBox9.Text));
  Label6.Caption := strRespuestas[Edit7.Text = Edit8.Text];

  Edit10.Text := FloatToStr(StrToFloat(ComboBox10.Text) + StrToFloat(ComboBox11.Text));
  Label7.Caption := strRespuestas[Edit9.Text = Edit10.Text];

  Edit12.Text := FloatToStr(StrToFloat(ComboBox12.Text) + StrToFloat(ComboBox13.Text));
  Label8.Caption := strRespuestas[Edit11.Text = Edit12.Text];

  Edit14.Text := FloatToStr(StrToFloat(ComboBox14.Text) + StrToFloat(ComboBox15.Text));
  Label9.Caption := strRespuestas[Edit13.Text = Edit14.Text];

  Edit16.Text := FloatToStr(StrToFloat(ComboBox16.Text) + StrToFloat(ComboBox17.Text));
  Label10.Caption := strRespuestas[Edit15.Text = Edit16.Text];

  Edit18.Text := FloatToStr(StrToFloat(ComboBox18.Text) + StrToFloat(ComboBox19.Text));
  Label11.Caption := strRespuestas[Edit17.Text = Edit18.Text];

  Edit20.Text := FloatToStr(StrToFloat(ComboBox20.Text) + StrToFloat(ComboBox21.Text));
  Label12.Caption := strRespuestas[Edit19.Text = Edit20.Text];

  Edit22.Text := FloatToStr(StrToFloat(ComboBox22.Text) + StrToFloat(ComboBox23.Text));
  Label13.Caption := strRespuestas[Edit21.Text = Edit22.Text];
end;

para la suma. Pero para las otras operaciones, lo único que cambia es el símbolo de la operación (+,-,*,/).

¡Algo debe poder hacerse para reducir las cuatro operaciones a una!

Podrías, por ejemplo, declarar una función:

Código Delphi [-]
type
  TOperacion = (opSuma, opResta, opMultiplicacion, opDivision);

function HazOperacion(Operando1, Operando2: Extended; Operacion: TOperacion): Extended;
begin
  case Operacion of
    opSuma: Result := Operando1 + Operando2;
    opResta: Result := Operando1 - Operando2;
    opMultiplicacion: Result := Operando1 * Operando2;
    opDivision: Result := Operando1 / Operando2;
  end;
end;

Si sustituyes

Código Delphi [-]
Edit4.Text := FloatToStr(StrToFloat(ComboBox4.Text) + StrToFloat(ComboBox5.Text));

por

Código Delphi [-]
Edit4.Text := FloatToStr(HazOperacion(
  StrToFloat(ComboBox4.Text), StrToFloat(ComboBox5.Text), Operacion));

entonces bastará un case al comienzo para escoger Operacion y entonces podrás usar el mismo código para las cuatro operaciones.

// Saludos
Responder Con Cita
  #7  
Antiguo 15-11-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola roman
Gracias por tu aporte, me la has puesto dificil de masticar, pero en cuanto lo entienda, lo aplico seguro.
Con respecto al uso de la nomenglatura estoy de acuerdo, no suelo hacer estas cosas asi, pero este programita como ves lo hice en un par de dias en horas de descanso, por eso esta aqui para que lo engrandezcais con vuestro conocimiento.
Gracias a todos los que aportais vuestro conocimiento.
Saludos
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
Los Simpsons y la matematicas seoane La Taberna 1 11-06-2006 21:53:22
Problemilla de matematicas. CRIS Varios 14 12-11-2005 12:25:27
Expresiones matemáticas en tabla ckaki Varios 1 19-07-2004 22:20:58
Expresiones matemáticas Pandre Varios 0 04-09-2003 01:43:49
expresion matematicas Irina Impresión 4 21-05-2003 00:49:51


La franja horaria es GMT +2. Ahora son las 01:08:17.


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