Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No encuentra rtl70.bpl (https://www.clubdelphi.com/foros/showthread.php?t=53299)

Nharkor 18-02-2008 10:38:41

No encuentra rtl70.bpl
 
Vereis, soy un completo novato en Dlephi y me han pasado un proyecto hecho hace tiempo que tengo que actualizar. Lo primero es generar el ejecutable partiendo de los fuentes. Desconozco la versión con la que fué desarrollado. Yo estoy utilizando Delphi 7 (el proyecto tiene extensión ".dpr") y parece que lo lee bien.

He tenido un monton de errores por falta de ficheros ".dcu" que al parecer, provienen de librerias o componentes externos (Placemnt.dcu, WinInetControl.dcu, ToolEdit.dcu, ZipMaster.dcu. VCIF1Lib_TLB.dcu. RXGIF.dcu). Bajandome cosas por internet y probando un poco a ciegas finalmente he conseguido que el proyecto compile y obtengo un ejecutable que funciona sin problemas en mi máquina, pero que al llevarlo a una maquina sin el Delphi instalado me empieza a dar errores porque no encuentra ciertos ficheros ".bpl".

El primer error lo da con "rtl70.bpl", pero si lo copio a la maquina cliente da error en otro ".bpl" y asi sucesivamente.
Además, el ejecutable que obtengo ocupa bastante menos que el orignial (tengo el ejecutable final original, pues dispongo del instalador que se creó en su momento).

Por lo que entiendo, es como si los ".bpl" fuese DLLs de modo que están linkadas dinamicamente y supongo que por eso mi EXE ocupa menos que el orginal. Necesitaria incluir estas librerias dentro del propio ejecutable (librerias estaticas).
En Proyect->Options->Packages he marcado la casilla "Built with runtimes packages", pero nada, el ejecutable es el mismo.
Entre estos "runtime packages" veo que existe, por ejemplo, uno que se llama rtl, pero el que a mi me pide es el rtl70.bpl. Si escribo rtl70 me vuelve a poner "rtl". Se que lo del 70 viene de Delphi 7, asi que supongo que el ejecutable original debió ser creado con otra versión de Delphi, dado que se ha ejecutado el setup en la máquina y no funciona..

En fin, ya no se que hacer.

¿Hay alguna manera de incluir estos "bpl" en en el ejecutable?

Deberia generar otro setup de instalación? Es ese caso... el propio Delphi incorpora algun generador de "setups" al estilo del Visial Basic? Porque yo no veo ninguno...

Un saludo.

paladincubano 18-02-2008 11:47:13

A la verdad, nunca habia visto que un exe compilado en Delphi en otra maquina pidiera BPL, se que puede pedir DLL si usas librerias externas y demas al igual que algun OCX si tambien lo usas y cosas asi, pero BPL nunca, quien los pide es el IDE cuando intenta compilar componentes y no los encuentra. Buscare algo y si loencuentro te lo digo, pero de veras nunca habia visto eso.

Lepe 18-02-2008 12:14:49

"Built with runtimes packages" está para eso mismo. Dejar el ejecutable pequeñito y tener que llevar los bpl. Además permite modificar el código de un sólo bpl sin tener que recompilar la aplicación al completo.

Deja la casilla en blanco y después usa Project -> Build all.

Eso meterá todo en el ejecutable y no hara falta los bpls.

El "rtl" viene de RunTime Library y obviamente son las dependencias en tiempo de ejecución de tu ejecutable.

También verás "dcl" que son los Desing Component Library y son los paquetes que necesita el IDE para funcionar. No necesitas llevarlo a la máquina del cliente.

Saludoss

Nharkor 18-02-2008 17:23:49

Muchas gracias.
Estaba usando la opción al revés. Hay que desmarcarla para que no incluya los ".bpl". Pero al hacerlo así me he visto obligado a incluir en el proyecto un montón de archivos fuente (los correspondientes a las RxLibs).

Ahora tengo otro problema y es en cuanto al fichero de ayuda. Existe un fichero de ayuda (EVACOM3.HLP) pero cuando se selecciona la ayuda desde la ventana principal busca el archivo EVACOM2.HLP. Sin embargo al seleccionar la ayuda desde otras ventanas de la aplicación si que funciona.

Desde la ventana principal este es el código que se ejecuta:

procedure TFAplicacion.Contents1Click(Sender: TObject);
var
i : boolean;
sFile : string;
begin
Application.HelpFile := ExtractFilePath(Application.ExeName)+'Evacom3.hlp';
sFile := Application.CurrentHelpFile;
sFile := Application.HelpFile;
i := Application.helpjump('EVACOM_ID');
Application.helpcontext(1);

sFile := Application.CurrentHelpFile;
end;

En modo Debug veo que Aplication.CurrentHelpFile apunta a "EVACOM2.HLP" mientras que Application.HelpFile apunta a "EVACOM3.HLP".
Sin embargo cuando se llama a Application.HelpJump() busca EVACOM2.HLP y no lo encuentra, obviamente, porque no existe.

Sin embargo, desde otras ventanas se ejecuta este código:


procedure TFrmSummaryInfo.bClick(Sender: TObject);
begin
Application.HelpJump('CORE_MAPS_ID');
end;

Y aqui, si que funciona, pues salta "EVACOM3.HLP". En las propiedades del proyecto le tengo puesto que la ayuda sea EVACOM3.HLP. ¿De donde saca EVACOM2.HLP? Porque por mas que he mirado el código, incluyendo el archivo de proyecto ".dpr" en ningun sitio encuentro EVACOM2.HLP.
¿Que tendria que cambiar para que coja la ayuda en la ventana principal?



La franja horaria es GMT +2. Ahora son las 09:26:09.

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