FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Moldeado de tipos
|
#2
|
||||
|
||||
Wop!
De la primera, Delphi va a la dirección de memoria de la referencia, da por supuesto que es de la clase que le indicas e intenta acceder a la dirección del método o la propiedad en cuestión. Si la referencia no es de ese tipo, saltará un Access Violation. De la segunda manera, Delphi comprueba (en ejecución, claro) que la referencia sea de la clase "prometida" o de un descendiente. Si no lo es la excepción es un poco más elegante: te dirá que no puede hacer el cast. El primer sistema es más más rápido, así que, como normalmente no querrás que salga ninguna excepción, lo típico es el siguiete patrón:
No obstante, existen algunas circunstancias en las que no podrás hacer el cast directo (sin el "as"), por ejemplo si trabajas con variables de clase.
__________________
E pur si muove |
#3
|
|||
|
|||
Me ha quedado perfectamente claro. Gracias.
|
#4
|
||||
|
||||
¡Buen día a todos!
Cita:
A final de cuentas, sólo aconsejo (y utilizo) el molde de tipo Clase (Objeto) cuando estoy seguro de que la referencia será siempre válida. Esto sucede por ejemplo cuando hacemos referencia a un elemento de la propiedad Components de una forma, y sabemos que dicho componente es un TEdit: Código:
TEdit (Components [4]).Text := 'Prueba'; Al González . |
|
|
|