![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#4
|
||||
|
||||
|
Cita:
Todavía albergo esperanza... Cita:
PREMISA PARA PODER UTILIZAR RTTI (GetClass): Tanto en el artículo de Vino Rodigues (parte del FINALLY) como en el mío (donde están las RECOMENDACIONES), se deja bien claro que el Check "Build with runtime Packages" debe estar marcado. ¿Porqué? Por explicarlo de una forma sencilla, si compilas sin Runtime packages la información de RTTI del programa principal y de los packages dinámicos no se encuentra en el mismo lugar, por tanto al acceder desde el programa a esa información del package (con GetClass), no la encuentra. La única forma de que esa información esté accesible es compilando el programa con Runtime Packages. Por otro lado están los packages que se cargan de forma estática, que son los que aparecen en la lista que comentas. El package1 que aparece en esa lista, se carga de forma estática, por eso está ahí. Los packages que tú vas a cargar de forma dinámica (con LoadPackage) no deben estar es esa lista. Por la razón que tú comentas (si no existieran fallaría la aplicación). (1) Activa el CheckBox en las opciones del proyecto. (2) Elimina los packages que vayas a cargar con LoadPackage de esa lista (3) Ejecuta el código y prueba el GetClass. CONCLUSIONES. (1) Si tu aplicación se compila/linka sin packages dinámicos (todo en un EXE), puedes usar LoadPackages para cargar packages dinámicos, pero no podrás utilizar la información de RTTI (por ejemplo GetClass) de los packages cargados con LoadPackages desde la aplicación (GetClass de las clases del package siempre devolverá nil). (2) Si tu aplicación compila con runtime packages, hay packages cargados estáticamente (de los que has hecho un USES -los de la VCL, por ejemplo-) y que estarán en la lista de packages (si no están la aplicación falla) y packages cargados dinámicamente con LoadPackage. Estos últimos no deben estar en la lista de packages (opciones del proyecto) y si no están disponibles, fallará la llamada a LoadPackage, pero no la ejecución de la aplicación. Con este escenario la información RTTI de todos los packages cargados (estáticos y dinámicos) está en el mismo lugar, por lo tanto puedes acceder a ella -para todos los packages- sin problemas (Getclass). Espero haberme expllicado medianamente bien. Un saludo. P.D: Sigo creyendo que ganaré la cerveza. ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Hilos con objetos dinámicos | netoDelphi | Varios | 2 | 27-11-2006 20:46:05 |
| Dudas con paquetes... | adlfv | OOP | 1 | 01-09-2005 16:18:10 |
| Paquetes en delphi | davezf | Varios | 4 | 05-04-2005 20:04:18 |
| paquetes ¿? | acertij022 | Internet | 0 | 20-08-2003 16:06:31 |
| Paquetes en runtime | rezahe | Varios | 4 | 25-05-2003 06:27:26 |
|