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
  #21  
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: 29
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
  #22  
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
  #23  
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
  #24  
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: 29
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
  #25  
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
  #26  
Antiguo 12-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: 29
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
Cita:
Empezado por Delphius Ver Mensaje
Estoy en mi cama con el celular y durmiendome...
Es curioso (y preocupante) lo frecuente de ese fenómeno. Yo tengo el mío apagado; lo encenderé de nuevo por la mañana, durante o después del desayuno. Y he comenzado cierto hábito de evitar introducir al dormitorio cualquier cosa que lleve un chip. A este paso pronto seré un cavernícola.
Responder Con Cita
  #27  
Antiguo 12-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
Eso deberíamos hacer todos Al.
Pero es difícil evitar la tentación.

Yo lo tengo por despertador y emergencias. Lo que si hago es dejarlo a una distancia prudenciable... cosa que al sonar la alarma me levante para apagarlo

Saludos, nuevamente con el celu y listo para dormir.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #28  
Antiguo 12-07-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo siempre lo apago, no quiero saber nada de emergencias, y menos todavía si la emergencia es a las 5 AM y algo así como: "Heriberto, que estamos esperándote abajo. Aquí no vive ningún Heriberto.
Responder Con Cita
  #29  
Antiguo 12-07-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por damianccs Ver Mensaje
Hice un programa de 'hola mundo' en Delphi consola y pesa 1.163 KB, en Visual BASIC el hola mundo no pesa tanto. Eso me pasa en la versión de prueba de Delphi Berlin y en Lazarus. No sé si las aplicaciones visuales pesen así con Delphi. Saludos
¿ Que versión de Delphi ? Delphi 7 genera un programa consola "hola mundo" que pesa sólo 40 kb...



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #30  
Antiguo 12-07-2016
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
¿ Que versión de Delphi ? Delphi 7 genera un programa consola "hola mundo" que pesa sólo 40 kb...
Acabo de hacer la misma prueba con Free Pascal 3.0.0. Sin optimizar, 176'5Kib, optimizado, 26'3Kib.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
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 22:33:16.


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