Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   duda algo tonta (https://www.clubdelphi.com/foros/showthread.php?t=59955)

cyber_zero 14-09-2008 23:45:18

duda algo tonta
 
hola, buenas tardes
Soy algo nuevo en esto de delphi y tengo un problema con un if, no encuentro como hacerlo, este es el codigo que estoy usando y tambien el error que me produce, gracias de antemano

if Panel1.Color:=cl3DLight
then Panel3.Color:=clRed;

[Error] Unit1.pas(74): Type of expression must be BOOLEAN

DarkMan 14-09-2008 23:47:09

Prueba con
Código Delphi [-]
if Panel1.Color=cl3DLight then Panel3.Color:=clRed;
;)

cyber_zero 15-09-2008 00:24:49

gracias Dark Man
 
ya me estaba volviendo loco por no saber que estaba mal jajajajaja y bueno ya que me anime a hacer mis preguntas tontas, me sale este error con el siguiente codigo

se supone que la expresion debe hacer esto, si panel17 es rojo y panel18 es rojo entonces panel7 es rojo

Delphi (-)

if Panel17.Color=clRed and Panel18.Color=clRed then Panel7.Color:=clRed;

el error que me da es

[Error] Unit1.pas(121): Incompatible types

gracias

Caral 15-09-2008 01:04:51

Hola
Código Delphi [-]
if (Panel17.Color = clRed) and (Panel18.Color = clRed) then
Panel7.Color = clRed;
Saludos

Caral 15-09-2008 01:10:02

Hola
Que viejo me me estoy volviendo, ya ni me acuerdo, creo que es asi:
Código Delphi [-]
if (Panel17.Color = clRed) and (Panel18.Color = clRed) then
Panel7.Color:= clRed;
Saludos

Caral 15-09-2008 01:48:10

Hola
Otro ejemplito con case.
Estoy practicando para no olvidarme de esto:D:D
Código Delphi [-]
 case Panel17.Color and Panel18.Color of
 clRed: panel7.Color:= clRed;
 end;
Saludos

Delfino 15-09-2008 07:47:10

Cita:

Empezado por Caral (Mensaje 314168)
Código Delphi [-]
 case Panel17.Color and Panel18.Color of  clRed: panel7.Color:= clRed;  end;

Saludos

Creo q faltan los parentesis..

Caral 16-09-2008 00:18:44

Hola
Cita:

Empezado por Delfino (Mensaje 314200)
Creo q faltan los parentesis..

No creas amigo, no creas.:D
Saludos

Al González 16-09-2008 01:19:13

Cita:

Empezado por Caral (Mensaje 314168)
Hola
Otro ejemplito con case.
Estoy practicando para no olvidarme de esto:D:D

Código Delphi [-]
 case Panel17.Color and Panel18.Color of
 clRed: panel7.Color:= clRed;
 end;

Saludos

Hola Carlos.

El problema con ese ejemplo es que el Case no está preguntando si tanto Panel17.Color como Panel18.Color tienen un valor de clRed, sino que se está haciendo un "And de bits" con los dos valores enteros.

Mira este ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Case 7 And 11 Of
    3 : Showmessage (
      '7 y 11, ambos, tienen activos (en "1") los bits que ' +
      'forman el entero 3:'#13#13'...00000111 (7)'#13 +
      '    And'#13'...00001011 (11)'#13 +
      '---------------------'#13'...00000011 (3)');
  End;
end;

Aquí el resultado:


En conclusión, no podemos pedirle a Case que nos determine si dos expresiones cualesquiera (Panel17.Color y Panel18.Color, en este caso) son iguales a una tercera (clRed). :)

Saludo And Abrazo.

Al González.

Caral 16-09-2008 18:37:34

Hola
Es curioso Al Pero hice las comparaciones y siempre me sirvió.
Pongo 3 paneles y un botón.
Si pongo los dos primeros en rojo al presionar el botón este se pone en rojo también, pero si alguno de los primeros no esta en rojo el tercero no se pone en rojo tampoco.
Para estar mas seguro adicione mas paneles e hice la comparación sin orden especifico y también lo hizo.
Por lo tanto a mi si me hace la comparación.
Estoy seguro de que estoy equivocado, pero mi delphi me quiere mucho y siempre hace lo que le pido.:D:D
Saludos Amigo
Pd: Entendí mal tu ultima estrofa.
Lo que se pretende no es comparar los dos primeros con el tercero, es: Si el primero y segundo son rojos el tercero se pondrá en rojo también, no hay comparaciones.

Al González 17-09-2008 00:08:58

Hola Carlos.

Como comenté, la tercera "expresión" es clRed. Un case siempre compara. ;)

En cuanto a que sí te funciona, no es de extrañarse mucho, simplemente te ha tocado que los bits "coincidan", pero es muy arriesgado y desaconsejable hacerlo de esa manera. Con otras constantes de color podría fallarte.

Estoy en un café Internet sin Delphi a la mano para ver el patrón de bits de clRed y otras constantes de color que pudiera tomar como ejemplo, pero reafirmo lo dicho en mi comentario de arriba. :)

Saludos.

Al.


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

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