Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 13-10-2012
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 20
rolandoj Va por buen camino
Hasa ahora toda ha fracasado. Alguna idea ?

Hola,

Bueno, he seguido probando he investigando. Opté por hacer el ejemplo más sencillo posible; o sea, crea un proyecto de prueba con un único formulario que simplemente desciende de la clase que he definido; sin ningún tipo de código adicional.

Ni siquiera así logro que Lazarus me abra el formulario; aunque si he podido compilar el proyecto. Eso me tiene muy confundido.

Si Lazarus enlaza de manera estática, la única explicación que veo es que la clase en sí está bien. Asumo que lo que falla es su registro con el IDE de Lazarus; pero, como se hace para registrarla en el IDE ?.

No he encontrado ninguna documentación que lo explique claramente. En lo que he leído se dice vagamente que el registro es normalmente automático; pero, no se indica como revisar si una clase está registrada, ni como agregarla manualmente.

Igualmente se menciona una "fábrica de clases"; incluso hay ejemplos de la clase que la implementa; pero, no de como el contenido de esta se enlaza con el IDE.

Así, en la unidad de la clase padre hay un Procedure para efectuar registros que usa ese método de "fábrica". Ese procedimento es incluído automáticamente en la sección de inicialiazación del proyecto de prueba; pero, solo para registrar la última clase creada. Eso igual aplica en los ejemplos que usan el paquete standard y con ellos si funciona.

Dicho así parece algo enredado. Lo voy a poner en perspectiva.

Empecemos con el paquete standard. Ahí tenemos algo así :

TClaseBase ----> TClaseHija1 ----> TClaseHija2 ----> TClaseHija3

Así que la clase que realmente usan los proyectos es TClaseHija3

El procedimiento de registro, que usa la "fábrica" está codificado para TClaseBase y sus descdendientes. Es publicado en la unidad donde se define TClaseBase .

Cuando se genera un proyecto normal el Lazarus crea un formulario en que tenemos algo así :

Código Delphi [-]
TMiClaseProyecto = Class(TClaseHija3)
End;

Y en la sección de inicialización se crea algo así :

Código Delphi [-]
INITIALIZATION
RegisterAlgo('TMiClaseProyecto',TMiClaseProyecto);

Donde, lógicamente, RegisterAlgo es la rutina que mencioné antes para registrar clases.

Esto es lo standard y definitivamente funciona bien. Notese que la llamada a la rutina de registro ocurre solo sobre la última clase de la cadena; o sea, la que se crea solo para el proyecto final. No aparece ni en el proyecto ni en las unidades standard llamadas a RegisterAlgo que apliquen a TClaseHija1, TClaseHija2 o TClaseHija3.

Yo que hice. Escribí un paquete análogo así

TClaseBase ----> TMiClaseHija1 ----> TMiClaseHija2 ----> TMiClaseHija3

En ese enfoque, mis 3 clases descienden de la misma clase base que las clases análogas del paquete standard. Esa clase base y su procedimiento de registro están en unidades suministradas por el paquete standard.

Mi paquete compila y se instala sin errores

Así pués, confiando en eso, yo creo mi proyecto y hago también lo mismo que en la generación autmática que usa el standard; o sea,

Código Delphi [-]
TMiClaseProyecto = Class(TMiClaseHija3)
End;

Y la sección de inicialización es la misma que en el proyecto creado por el ejemplo standard.

Sin embargo, aquí si no funciona. En cambio, cada vez que trato de abrir el formulario me dice que TMiClaseHija3 no está registrada con RegisterClass; pero, como he dicho antes, para las clases análogas del standard (TClaseHija3, etc) no aparecen llamadas que las registren. Bueno, al menos la busqueda de texto que hago en todo el subdirectorio CodeTyphon no encuentra nada (Y lo hago desde CodeTyphon por seguridad, debería ser solo sobre el directorio fuente del paquete standard)

Alguna idea ?
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como usar SQLite con Lazarus¿ mcs Lazarus, FreePascal, Kylix, etc. 6 12-03-2014 00:04:57
Usar componentes de Lazarus en Delphi buenarquero Varios 12 22-11-2011 17:52:02
Que versión de Lazarus usar? mcs Lazarus, FreePascal, Kylix, etc. 27 13-12-2010 19:29:47
ayuda para usar lazarus Robert01 Linux 9 21-08-2006 11:09:35
RegisterClass MARIOR Varios 1 06-01-2004 11:53:30


La franja horaria es GMT +2. Ahora son las 00:32:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi