Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2006
ezindetgeio ezindetgeio is offline
Miembro
 
Registrado: dic 2006
Posts: 12
Poder: 0
ezindetgeio Va por buen camino
De hecho, a veces tampoco me va ni así.

Mejor dicho, YA no me va.

Adjunto un ejemplo tontísimo.

Unidad que luego empaqueto (como Run-Time):

Código Delphi [-]
unit UClasePrueba;

interface

uses

        Windows, Classes;

type
   TClasePrueba = Class (TPersistent)

     private
       sNombre         : String;
       sEdad    : Integer;

     published

       constructor Create(nombre: String; edad: Integer);
       function GetNombre : String;
       function GetEdad : Integer;
       procedure SetNombre(const nombre: String);
       procedure SetEdad(const edad: Integer);

   end;

var
   ClaseAitor : TClasePrueba;

implementation

 constructor TClasePrueba.Create(nombre: String; edad: Integer);
 begin
   sNombre         := nombre;
   sEdad := edad;
 end;

 procedure TClasePrueba.SetNombre(const nombre: String);
 begin
   sNombre         := nombre;
 end;

 procedure TClasePrueba.SetEdad(const edad: Integer);
 begin
   sEdad         := edad;
 end;

 function TClasePrueba.GetNombre() : String;
 begin
   result:= sNombre;
 end;

 function TClasePrueba.GetEdad() : Integer;
 begin
   result:= sEdad;
 end;

 initialization

        RegisterClass(TClasePrueba);

 finalization

        UnRegisterClass(TClasePrueba);
end.

Formulario que cargaría el .bpl y lo llamaría:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);

var

Paquete: HModule;
clase: TPersistentClass;

begin

Paquete := LoadPackage('C:\Documents and Settings\aillarra\Desktop\Package2.bpl');

if Paquete <> 0 then


  begin


    clase := GetClass('TClasePrueba');


    if clase <> nil then
       ShowMessage('Bien')
    else
     ShowMessage('La clase no está');
 
    UnloadPackage(Paquete);


  end;


end;

end.
Me dice que no encuentra esa clase.

Así que estoy en las mismas.

El hecho de que haga un .exe que en los use tenga los accesos a esos .bpl que como trabajo en local tienen los .dcu y demás y sabe de qué van se me escapa a la hora de distribuir y llevarme sólo el .exe y sus bpl.

¿Cómo sabe ese .exe nada de esos .bpl si no están registrados en ninguna parte?


Última edición por ezindetgeio fecha: 11-12-2006 a las 18:29:43.
Responder Con Cita
  #2  
Antiguo 11-12-2006
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 23
Albano Va por buen camino
Hola ezindetgeio! Bienvenido al club!
Te voy a dar un consejo para la redacción de los mensajes:
Cuando escribas código usa la etiqueta para código de delphi y tu código se verá de la siguiente manera:
Código Delphi [-]
procedure TClasePrueba.SetNombre(const nombre: String);
 begin
   sNombre         := nombre;
 end;
Ésto hace que sea mas facil de leer e identificar.
Para hacerlo solo haz lo siguiente:
  1. Selecciona el código que escribiste en tu mensaje.
  2. Presiona el botón que tiene el logo que relacionamos con delphi (3 pilares y un techo color café), si posicionas el mouse sobre él, va a aparecer su "hint", que dice "Resaltar sintaxis delphi".
Responder Con Cita
  #3  
Antiguo 11-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.503
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Apoyo lo dicho por Albano.

Sobre el problema en cuestión, haz una prueba.
En el proyecto donde cargas el package (Form1), marca en las opciones del proywcto "Build with runtime packege" y prueba de nuevo.
__________________
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.
Responder Con Cita
  #4  
Antiguo 11-12-2006
ezindetgeio ezindetgeio is offline
Miembro
 
Registrado: dic 2006
Posts: 12
Poder: 0
ezindetgeio Va por buen camino
Hola:

Corregido lo del código. Perdón, no estoy muy habituado a foros.

He probado lo que me dice Neftali (aunque en principio va un poco con la filosofía de lo que quiero hacer puesto que se supone que es desde código donde le digo que cargue el paquete).

Aún así, marcando el checkbox y añadiendo el .bpl a pelo, no me funciona.

Muchas gracias por la ayuda que me prestáis.
Responder Con Cita
  #5  
Antiguo 11-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.503
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ezindetgeio
Aún así, marcando el checkbox y añadiendo el .bpl a pelo, no me funciona.
No lo entiendo; A mi me funciona perfectamente.
Me carga la clase sin problemas. El comentario era, porque para utilizar los packages dinámicos y las clases (GetClass) mediante RTTI, el programa desde el que haces la carga debe estar compilado con Runtime Packages; Vamos que no puedes mezclar un programa que compila "sin package en runtime" con la "carga dinámica de packages en runtime + Getclass".
__________________
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.
Responder Con Cita
  #6  
Antiguo 11-12-2006
ezindetgeio ezindetgeio is offline
Miembro
 
Registrado: dic 2006
Posts: 12
Poder: 0
ezindetgeio Va por buen camino
Pues nada Neftali.

Algo mal debo estar haciendo o bien al crear el BPL o bien luego.

Pruebo ahora.

Aún y todo, sigo sin comprender muy bien cómo va lo que comentas de la opción de lo de runtime en el proyecto que invoca al otro bpl.

Pero esto es debido a mi desconocimiento en Delphi. Que es cero patatero.

Sabiendo ya que funciona lo pruebo y te aviso.

¿Quizás esté creando mal el BPL?

Saludos y gracias.
Responder Con Cita
  #7  
Antiguo 11-12-2006
ezindetgeio ezindetgeio is offline
Miembro
 
Registrado: dic 2006
Posts: 12
Poder: 0
ezindetgeio Va por buen camino
Soy un inútil.

Ya funciona.

Aunque sigo sin entender cómo sabe por debajo el exe que genero todo lo relativo a la bpl, cuando me puedo llevar de ahí los .dcu y demás.

¿Cómo podría hacer para averiguar las clases y métodos que tiene un .bpl sin eso?

No entiendo muy bien lo que se hace por dentro.

Muchas gracias Neftali
Responder Con Cita
  #8  
Antiguo 11-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.503
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ezindetgeio
Aunque sigo sin entender cómo sabe por debajo el exe que genero todo lo relativo a la bpl, cuando me puedo llevar de ahí los .dcu y demás.
Intento explicarlo de forma simple...
El package (BPL - Borland Package Library-) contiene dentro los DCU's. Es decir, cuando creas un package con un monton de Units/Forms, la BPL resultante es equivalente (por decirlo así) a juntar todos los DCU's de esas Units/Forms y meterlos dentro.
Además Borland guarda información complementaria (RTTI) que permite acceder en ejecución a métodos/clases...
Esta información es la que se usa cuando accedes utilizando GetClass.

Échale un vistazo a este artículo de Vino Rodrigues; Es muy aclaratorio.
__________________
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Acceso a DLL aggg63 Varios 19 18-02-2013 20:49:54
Equivalencia a los bpls en .NET poliburro .NET 5 02-10-2006 22:21:49
Acceso a BD Danielle SQL 3 29-04-2006 08:40:20
Acceso a SP tgsistemas Conexión con bases de datos 1 14-09-2004 18:26:34
Creación de BPLs y DCPs GIVO Varios 1 19-06-2003 19:52:36


La franja horaria es GMT +2. Ahora son las 15:42:18.


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