![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Yo suelo usar:
saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#2
|
||||
|
||||
|
A reserva de lo que diga Juan Antonio, te doy mi opinión.
Usar TLabel(Sender) es una apuesta a la consistencia de tu código. Estás confiando ciegamente en que Sender es de tipo TLabel y lo será no importa cuántos cambios hagas en lo futuro a tu código. Es más confiable protegerse uno mismo y verificar que el tipo de datos es realmente el esperado:
La forma que usa Juan Antonio, usando el operador as, también te protege ya que implícitamente, as comprueba el tipo de datos y si no coincide lanza una excepción. ¿Por qué protegerse? Bueno, razones puede haber muchas, pero yo lo veo similar a hacer: Código:
puntero^.campo := valor // Saludos |
|
#3
|
||||
|
||||
|
Ya Roman ha explicado muy bien el porque usar el operador as/is en estos casos (recordá que el método Label1Click podrías asignarlo a componentes de diferentes clases en tiempo de ejecución, e incluso invocarlo desde código. Que pasa si a un futuro programador que está dando mantenimiento a tu código se le ocurre hacer esto:
Solo para terminar de molestar un poco... he podido comprobar que el método CanFocus puede decirnos true, y de todas formas ocurrir un error al intentar establecer el foco, así que para terminar de "molestar" en terminos de Fede:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#4
|
|||
|
|||
|
Yo haría este pequeño cambio:
Ya que al hacer una comprobación previa con el operador is, al usar as se estaría haciendo de nuevo una comprobación is. Recuerden lo que puso roman: Cita:
Saludos... Última edición por maeyanes fecha: 19-12-2005 a las 19:41:05. |
|
#5
|
||||
|
||||
|
Cita:
... No se producirá un Access Violation!Cita:
![]() Lo he visto en mas de una ocasión, nunca me lo puse a investigar, pero la solución del momento no distó en nada de la tuya ![]() Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#6
|
||||
|
||||
|
Cita:
.Que conste, que realizo ese tipo de comprobaciones, y en este caso estoy con Maeyanes. No estoy seguro, pero creo haber leido en este foro, que el operador "as" sobrecarga más la situación. Desde mi punto de vista, creo que bastaría con: Una vez que estoy seguro que es un TLabel, accedo directamente haciendo el moldeo. Repito, es mi forma de trabajar, y ahora que ahondo en el problema, quizás fuese mejor simplemente: Ya que lanza una Excepción (que se verá en ejecución), desde mi forma de programar, simplemente notaré que "el programa no hace lo que debiera" (porque no entrará en el if si no es un TLabel), y tendría que hacer un traceo paso a paso hasta encontrar ese pequeño error. De la segunda forma, si el "soso" es muy soso, verá la excepción. No creo que tenga que arreglar los futuros problemas con mi código .saludos Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
||||
|
||||
|
Cita:
// Saludos |
|
#8
|
||||
|
||||
|
Cita:
saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|