Cita:
Empezado por jachguate
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:
Código Delphi [-]
Label1Click(Button1); Label1Click(nil);
|
Pues pasa, que ese programador es un "soso" por decir algo
.
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:
Código Delphi
[-]
if (Sender is Tlabel) then
TLabel(Sender).blah
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.