Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas de compatibilidad entre librerías (https://www.clubdelphi.com/foros/showthread.php?t=95083)

tiqui_loquito 20-02-2021 02:54:10

Problemas de compatibilidad entre librerías
 
Hola a todos

Les quería preguntar lo siguiente:

Resulta que tengo una aplicación en Delphi7 y he creado una Bpl en Delphi Tokio 10.2.

Hago el llamado de la bpl desde delphi7 pero me retorna este error:

Project Historia_ClinicaE.exe raised exception class EPackageError with message ‘Cannot load package ‘rtl250.’ It contains unit ‘System,’which is also contained in package ‘rtl70”. Process stopped. Use Step or Run to continue.

Pegue el trl250 en el syswow64 pero nada. Realmente no se como configurar o donde colocar esta librería para que delphi 7 me la reconozca.



Les agradezco de antemano la ayuda que me puedan brindar

lucho6007 20-02-2021 14:23:45

Las BPLs deben ser compiladas con la misma versión del programa que las va a usar. Vas a tener que compilar la BPL en Delphi7 si querés que un programa escrito en Delphi7 la pueda cargar.

tiqui_loquito 20-02-2021 19:53:08

Hola, gracias por responder.

Te cuento que tengo que hacer la bpl en Delphi Tokyo 10.2 por que hay componentes que no tengo en Delphi7.

Hice una bpl en Delphi10.4 y la pude integrar con Delphi7, luego me toco desinstalarlo e instalar Delphi Tokyo y solo copie las bpl 250 al syswow64 y pude seguir usando la bpl con el aplicativo de Delphi7.

Por eso necesito poder integrar el llamado de la bpl desde delphi7.

este es el código cone l que llamo la bpl

Código Delphi [-]
unit U_EjecutarServicioFarmacia;

interface

uses Forms, Classes, Windows, SysUtils, Dialogs;

Type
  TU_EjecutarServicioFarmacia = class
  public
   class function ConsultarExistencias(pCodFarmaco:String):String;
  end;

implementation

//class function TU_ServicioCliente.ServicioPrueba(pCadena: String): string;
class function TU_EjecutarServicioFarmacia.ConsultarExistencias(pCodFarmaco:String): string;
var vEjecutar: function (pCodFarmaco:String): string;register;
 vRuta: String;
 pPaquete:Cardinal;
begin
    vRuta := ExtractFileDir(Application.ExeName)+'\Lib\';

    (* '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-'  *)
    (* '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-'  *)
    (* '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-'  *)
    (* validacion para que como desarrollador pueda saber si la definicion
       constante de la bpl es correcto:
       la excepcion se mostrara en compilación y no en ejecución*)

    try
      pPaquete := LoadPackage(vRuta+'ServicioFarmacia.bpl');
      if pPaquete <> 0 then
      begin
        @vEjecutar := GetProcAddress(pPaquete, 'ConsultarExistencias');
        Result := vEjecutar(pCodFarmaco);
      end;
    except
      on e:Exception
        do
        begin
          //ShowMessage(e.Message+': Servicios') ;
          Result:=('-1');
        end;
    end;

end;

end.

tiqui_loquito 20-02-2021 20:29:10

Mira que llamo a la bpl desde otro aplicativo hecho en Dephi7 y si la ejecuta.

No se que tengo que modificar o recompilar en el otro aplicativo para que me tome la bpl

tiqui_loquito 09-03-2021 19:23:57

Cita:

Empezado por lucho6007 (Mensaje 540111)
Las BPLs deben ser compiladas con la misma versión del programa que las va a usar. Vas a tener que compilar la BPL en Delphi7 si querés que un programa escrito en Delphi7 la pueda cargar.


Hola lucho

Te cuento que la opción es crear una dll y de esa manera no habría lío.

Gracias

tiqui_loquito 09-03-2021 19:27:37

Tema cerrado
 
Doy por cerrado el tema


La franja horaria es GMT +2. Ahora son las 18:28:54.

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