Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2016
damianccs damianccs is offline
Baneado
NULL
 
Registrado: jun 2016
Posts: 12
Poder: 0
damianccs Va por buen camino
Gracias por sus respuestas, el apoyo que se obtiene en las comunidades de desarrolladores en un lenguaje de programación también es un plus. Saludos
Responder Con Cita
  #2  
Antiguo 11-07-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por rocksoft Ver Mensaje
Y ya que estamos,

tambien suele ocurrir al hacer unos proyectos sobresimensionados como un HOla Mundo, cae uno en la tentacion de probar varios VLC, que al final no usamos y los borramos del diseño, pero no borramos la libreria de la unit y nos quedan uno residuos estupendos, como cuando usamos Jedi, Devexpres, que directamente te meten unas 10 units a escondidas y facilemten te pesa el hola mundo mas de 20 mb
Cita:
Empezado por AgustinOrtu Ver Mensaje
Definitivamente. Igual, yo ya me acostumbré a eliminar todas las unit que no hacen falta, incluso si es una de las de Delphi estándar
Ya antes he comentado que el compilador es bastante inteligente y sólo agrega al exe lo que requiera o usa. Que estén enlistadas en uses las units no lo hace al ejecutable final más pesado. Si de esas units no se usa ninguna clase, métodos, funciones, procedimientos, etc simplemente las ignora y no agrega nada al ejecutable.

Ese es el comportamiento por defecto desde D6 y D7 y debiera seguir siéndolo en las nuevas versiones.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 11-07-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
La verdad no lo he probado. Realmente si elimino unidades del uses no es para ahorar kilobytes

Aun asi, hay que tener cuidado con las unit que tienen "initialziation" y "finalization". Yo en alguna unit se que uso un "viejo truco":

Código Delphi [-]
initialization
  TAlgunaClase.ClassName // --> Boom! el compilador ya te linkeo la unit 

Eso lo hago para registrar alguna cosa en algun lado, por ejemplo, como cuando se registran las clases de graficos (distintos formatos de imagenes) o lo mismo para archivos multimedia
Responder Con Cita
  #4  
Antiguo 11-07-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Y considerar que los constructores y destructores de clase vienen a ser, para muchas nuevas bibliotecas, una mejor alternativa que las tradicionales secciones Initialization y Finalization. Estas últimas, opcionales al final de las unidades .pas, sí que hacen que el programa ejecutable pese y haga más cosas de las que vemos a simple vista.

Ojo, pues.
Responder Con Cita
  #5  
Antiguo 11-07-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por AgustinOrtu Ver Mensaje
La verdad no lo he probado. Realmente si elimino unidades del uses no es para ahorar kilobytes

Aun asi, hay que tener cuidado con las unit que tienen "initialziation" y "finalization". Yo en alguna unit se que uso un "viejo truco":

Código Delphi [-]initialization TAlgunaClase.ClassName // --> Boom! el compilador ya te linkeo la unit


Eso lo hago para registrar alguna cosa en algun lado, por ejemplo, como cuando se registran las clases de graficos (distintos formatos de imagenes) o lo mismo para archivos multimedia
Pues, si. Con esas units hay que cuidarse. Pero vuelvo a mis dichos: el compilador no es que te pone todo en el ejecutable. Sólo lo que necesita. Por ejemplo digamos que tienes una unit llamada UMisCosas y en dicha unit tienes cientos de procedimientos y funciones y algun par de clases. Esta unit es de propósito general, y ahora vas a usarla en una aplicación. La pones en uses, listo para usarla.
Ahora, sólo por ponerla, no hace nada (hagamos de cuenta que no hay inicialización ni finalización). Hagamos de cuenta que del centenar de procedimientos tienes contemplado usar apenas unas decenas. Justamente en la aplicación se incorporan solamente lo que se invoca.

Y el compilador es inteligente. Si no se usa nada, no lo pone. Lazarus es igual, aunque en esto es un poco más vivo: te informa de las unidades que no se están usando.

De todas formas, se puede hacer una "limpieza" al borrar los archivos temporales que genera Delphi y forzar de esa forma una nueva construcción.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 11-07-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Totalmente de acuerdo con lo que decis; pero vuelvo a remarcar que a mi no me interesa mucho el ahorro de bytes en el binario final sino el concepto (impacto que tiene en el diseño) el tener un uses que sobra

Cita:
Lazarus es igual, aunque en esto es un poco más vivo: te informa de las unidades que no se están usando.
Eso es sencillamente fantastico. En Delphi no tenemos algo asi?


Cita:
Y considerar que los constructores y destructores de clase vienen a ser, para muchas nuevas bibliotecas, una mejor alternativa que las tradicionales secciones Initialization y Finalization. Estas últimas, opcionales al final de las unidades .pas, sí que hacen que el programa ejecutable pese y haga más cosas de las que vemos a simple vista.
Si y no. Si la clase nunca se usa entonces el constructor de clase no se ejecuta. Por eso el truco del .ClassName . Por supuesto que si el usuario usa la biblioteca todo marcha bien

Código Delphi [-]
unit Unit3;

interface

type
  TTestClassConstructor = class
  public
    class constructor Create;
    class destructor Destroy;
  end;

implementation

class constructor TTestClassConstructor.Create;
begin
  Writeln('TTestClassConstructor.Create');
end;

class destructor TTestClassConstructor.Destroy;
begin
  Writeln('TTestClassConstructor.Destroy');
end;

end.

Con un codigo de aplicacion de consola vacio (un simple Readln para que no se cierre), aunque este la unit3 en el uses, los constructor/destructor de clase no se ejecutan.

Pero, si hago esto si:

Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Unit3 in 'Unit3.pas';

begin
  try
    TTestClassConstructor.ClassName;
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Esto se ejecuta siempre

Código Delphi [-]
unit Unit3;

interface

implementation

initialization
  Writeln('initialization');

finalization
  Writeln('finalization');

end.
Responder Con Cita
  #7  
Antiguo 11-07-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Claro está, Agustín. Por eso en muchos casos resultan mejores los constructores y destructores de clase (quizá debí intentar explicarlo tan bien como tú).

Marcelo: interesante lo que hace Lazarus. Me pregunto por qué Delphi se ha demorado tanto en agregar algo tan útil (de forma nativa).

Saludos óptimos.
Responder Con Cita
  #8  
Antiguo 11-07-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Lazarus lo informa por medio de un hint o warning... no recuerdo bien. Estoy en mi cama con el celular y durmiendome como para verlo ahora.
Lo que si puedo decir es que tal funcionalidad puede que venga de la mano con el hecho de que por defecto Lazarus almacena info de debug.
A medida que uno pone y saca cosas el ejecutable gana en tamaño, aún cuando hace linkeo inteligente se le queda basura y hay que borrarsela.
Para eso se le configura al poyecto y se indica que no genere debug info.

Delphi en esto es diferente. No se queda con la basura. Solo se queda con los ultimos cambios. Pueden ver esto en accion con la generacion de los archivos de compilacion temporales. Delphi detecta cuando cambia algo, y debe regerenarlos.

Desconozco por que no han puesto esta caracteristica, o si la pusieron tarde.

Saludos

Saludos
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



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
Instalador de programas Delphi Jose Roman Varios 5 13-03-2015 20:20:20
enlazar dos programas delphi cadina Varios 7 01-10-2008 17:11:47
enlazar dos programas delphi cadina OOP 2 08-08-2007 20:37:53
Programas Ocultos en Delphi 5 eljavi Varios 3 07-03-2007 04:37:31
Programas escritos con Delphi [Gunman] Varios 16 23-11-2005 14:32:36


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


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
Copyright 1996-2007 Club Delphi