Ver Mensaje Individual
  #3  
Antiguo 24-08-2005
adlfv adlfv is offline
Miembro
 
Registrado: may 2005
Posts: 39
Reputación: 0
adlfv Va por buen camino
Gracias, pero sigo teniendo problemas :(

Muchas gracias por tu ayuda.

Efectivamente, me faltaba exportar la función BD, pero sigo teniendo problemas... Te cuento...

El DataModule de datos (DMDatosZeos) lo utilizo en:

· Los paquetes (pero al ponerlo en la cláusula requires, no hay problema y lo puedo ver).
· El programa principal. Esto es lo que me está volviendo loco . Como el programa principal utiliza _BD, tengo que agregar al proyecto UBD, pero es sólo para "engañar" al compilador y para que logre compilar, pues el objeto como tal reside en el paquete... Pero que pasa, que la referencia de _BD del programa tengo que hacer que apunte a la referencia de _BD del paquete, pero no logro hacerlo... Es raro que los ejecutables no tengan una clausula requires o algo así cuando trabajan con paquetes... Eso me evitaría todos estos problemas.

Para hacer la asignación de _BD del principal a _BD del paquete he probado con :=, con Assign, incluso haciendome un metodo de asignación que asigne también las otras propiedades como el DataModule, y la conexión, y nada de nada... Depuro mostrando mensajes con las direcciones de los punteros Format('@_BD=%p', [@_BD]) y cosas así, y hay referencias que no me salen iguales en el principal y en el paquete...

Extrapolando mi problema a tu código fuente, sería algo así: en mi caso tengo que agregar CPrueba.pas al proyecto prueba.exe pues en ese se utiliza la base de datos, con lo cual tengo 2 objetos _Prueba, uno en el paquete y otro en el programa, el del paquete es el que se crea en realidad, pero el del programa debe apuntar (incluidos todos los campos métodos y todo) al del paquete (es decir debe ser como una copia exacta, pero sin ser copia, pero sin ser copia, pues la base de datos es común). Cómo puedo hacer esto?

Tal vez deba distinguir si el código de UBD es el del ejecutable o el del paquete mediante alguna directiva IFDEF (o algo así) pues dicha unidad es compartida a los paquetes y al ejecutable algo así como:
Código:
  {$IFDEF PROJECT=BD.BPL}
    ShowMessage('Estoy en el paquete');
  {$ELSEIF PROJECT=PRINCIPAL.EXE}
    ShowMessage('Estoy en el ejecutable');
  {$ELSE}
    ShowMessage('Estoy PERDIDO!!!');
  {$IFEND}
La verdad no tengo de cómo hacerlo, no he podido conseguir nada sobre esta directiva (o si existe algo similar) ni en la ayuda, ni en internet...

Muchas gracias por tu ayuda, te lo agradezco de verdad.

Y gracias a todos los que se han molestado en leer todo este rollo...

Un cordial saludo a todos.
Responder Con Cita