Ver Mensaje Individual
  #8  
Antiguo 03-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Enan0 Ver Mensaje
Simplemente un comentario sobre algo que he leido hace algun tiempo en algun manual de delphi en este decia que la utilizacion de "AS" no era muy conviente porque producia un consumo de memoria, talves excesivo en su defecto recomendaba usar
Hola Enan0.

Si tenés razón, en este caso es más eficiente usar el cast en forma directa, gracias por la observación.
Pero hay que aclarar que no siempre es "seguro" ese tipo de conversión directa, hay casos en que nos
conviene asegurarnos el tipo antes de realizar la conversión.

Algo que leí sobre el operador 'as':

"El operador as se puede descomponer en instrucciones más simples..." (Ian Marteens)

Por ejemplo:
Código Delphi [-]
(ActiveControl as TButton).Click
Es equivalente a:
Código Delphi [-]
  if ActiveControl is TButton then
    TButton(ActiveControl).Click  
  else
    raise EInvalidCast.Create('Tipo inválido');

En cambio este código es redundante y por tanto ineficiente:
Código Delphi [-]
   if ActiveControl is TButton then
      (ActiveControl as TButton).Click  // redundante, se sabe que es TButton

Lo correcto sería:
Código Delphi [-]
     if ActiveControl is TButton then  // verificar si es seguro el cast
       TButton(ActiveControl).Click;


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-01-2011 a las 21:57:51.
Responder Con Cita