[Lazarus-es] ¿Como hacer un Splash screen...?

Walter wmeson en gmail.com
Jue Dic 30 16:17:51 CET 2010


Hola Jose...
Nuevamente, gracias por los datos...voya ir probando paso a paso tus
indicaciones y escribo los resultados, para ser usado en caso de consultas
posteriores en el foro...


Muchísimas gracias...



El 30 de diciembre de 2010 10:32, José Mejuto <joshyfun en gmail.com> escribió:

> Hello Walter,
>
> Thursday, December 30, 2010, 1:34:30 PM, you wrote:
>
> W> ¿Que podrá ser...?, o al menos, ¿que tendria que tener en cuenta para
> que se
> W> acelere el arranque...?
>
> Pueden ser varias cosas, por ejemplo si comprimes el exe con UPX esto
> provoca que todo el exe se cargue en memoria y se ejecute todo junto
> inutilizando la carga selectiva de partes que hace windows.
>
> Otra causa puede ser un antivirus.
>
> Si no es una de estas lo más probable es que sucedan cosas en tu
> ejecutable de las que no eres consciente de que te están retrasando el
> lanzamiento. Una vez que lanzas un ejecutable de fpc/Lazarus suceden
> ciertas cosas por orden:
>
> 1) Se carga el exe
> 2) Se ejecutan todos los "initialization" de todas las units usadas en
> el programa. Lo que no estoy seguro es si se lanzan las que aparecen
> en el .lpr o todas.
> 3) Se ejecuta el begin...end del .lpr
>
> Lo más probable es que tengas muchos forms y estés usando el formato
> de recursos lazarus "*.lfr". Si es así en el initialization se cargan
> e interpretan esos recursos lo cual consume cierto tiempo
> especialmente si los forms tienen muchas imágenes.
>
> Haz una copia de seguridad de todo y después en el .lpr elimina del
> uses todo lo que no necesites en el .lpr, esto es, normalmente sólo
> dejarías algo como:
>
> uses
>  {$IFDEF UNIX}{$IFDEF UseCThreads}
>  cthreads,
>  {$ENDIF}{$ENDIF}
>  Interfaces, // this includes the LCL widgetset
>  Forms,
>  ufrmprincipal, ufrmsplash
>  { you can add units after this };
>
> Resumiendo, dejar sólo lo básico y los forms que uses en el .lpr nada
> más.
>
> Ah! y en el .lpr pon algo como esto:
>
> var
>  j: integer;
>
> begin
>  Application.CreateForm(TfrmSplash,frmSplash);
>  frmSplash.show;
>  for j := 1 to 10 do
>  begin
>    Application.ProcessMessages;
>  end;
>  Application.CreateForm(TfrmPrincipal,frmPrincipal);
>  Application.Run;
> end;
>
> Si así no cambia el tiempo de arranque (hasta que sale el splash
> screen) entonces sólo queda hacer una prueba, cambiar el .lpr por:
>
> begin
>  Application.CreateForm(TfrmSplash,frmSplash);
>  Application.Run;
> end;
>
> Y comparar los tiempos, si son similares el "problema" está en los
> initialization casi seguro. Si son bastante/muy diferentes entonces
> hay que cambiar el sistema de splash.
>
> Si no he entendido la pregunta pulsa ESC :)
>
> --
> Best regards,
>  José
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>



-- 
Walter Mesón
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20101230/01e0e14f/attachment-0002.html>


More information about the Lazarus-es mailing list