Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Sirkius
PD: yo tambien creia que el compilador/linkador seria inteligente, pero no. Quitando cosas del uses se ha ido reduciendo el tamaño...
Veamos los resultados de una sencilla prueba:

Nuevo proyecto en Delphi 7:

Código Delphi [-]
    uses
      Windows, Messages, SysUtils, Variants,
      Classes, Graphics, Controls, Forms, Dialogs;
Tamaño del ejecutable: 364 KB (372.736 bytes).

El mismo proyecto, pero, con la única unidad necesaria:

Código Delphi [-]
    uses
      Forms;
Tamaño del ejecutable: 364 KB (372.736 bytes).
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-09-2005 a las 17:50:23. Razón: (corrección del texto)
Responder Con Cita
  #2  
Antiguo 05-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
¡Me cambiaste el mensaje!
Pero como te escribí una prueba para el anterior, te la voy a subir:

Código Delphi [-]
program Project1;

uses
  DB,
  Dialogs;

begin
  ShowMessage('Hola Mundo!');
end.
El código es sencillo, estamos utilizando "de mas" la unit DB. Activa la opción "Use Debugs DCUs" (Project\Options\Compiler), pone un BreakPoint en el initialization de la unit DB, ejecuta tu aplicación y..... Woalá!
Como verás en ese initialization se utiliza un TDefaultDBScreenApplication, por consiguiente se va a requerir el código de TDefaultDBScreenApplication y el código que este utilice. (Si ves el caso de Forms verás que el alcance puede ser algo mayor)

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 05-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por dec
Código Delphi [-]
    uses
      Windows, Messages, SysUtils, Variants,
      Classes, Graphics, Controls, Forms, Dialogs;
Tamaño del ejecutable: 364 KB (372.736 bytes).

El mismo proyecto, pero, con la única unidad necesaria:

Código Delphi [-]
    uses
      Forms;
Tamaño del ejecutable: 364 KB (372.736 bytes).
En este ejemplo faltaría ver la implementación... ¿Escribiste código debajo?
De ser así, si utilisaste la clase TForm, por ejemplo, este caso es diferente a lo que comenté en el hilo anterior. El tema aquí es que la unit Forms y el código de sus clases principales, utilizan todas las units que nombraste anteriormente. Por eso no notas diferencia en este ejemplo sencillo.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 05-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver, a ver, que me estoy haciendo un lío... ¿Pues no que he visto tu último mensaje antes que el penúltimo que enviaste? ¿A qué se deberá esto? Y luego encima leo:

Cita:
Empezado por Federico
¡Me cambiaste el mensaje!
¡Pero si yo no hize nada! Estaba preparándote la respuesta a tu último mensaje cuando, al hacer una vista previa de la misma, veo que hay publicado un nuevo mensaje tuyo... ¡antes del que yo pensaba responder!

Ahora, tratando de responder a tu último mensaje...

Cita:
Empezado por Federico
En este ejemplo faltaría ver la implementación... ¿Escribiste código debajo?
De ser así, si utilisaste la clase TForm, por ejemplo, este caso es diferente a lo que comenté en el hilo anterior.
No; se trata de un proyecto "vacío", recién creado, con un solo formulario, vaya, la plantilla que te prepara Delphi para que comienzes con el mismo.

Cita:
Empezado por Federico
El tema aquí es que la unit Forms y el código de sus clases principales, utilizan todas las units que nombraste anteriormente. Por eso no notas diferencia en este ejemplo sencillo.
Bien pudiera ser. Pero, entonces, que me quede claro, que quizás por aquí debí haber comenzado y dejar las pruebas para quien sepa hacerlas en condiciones... Si yo no hago uso de la unidad "Dialogs" en una unidad cualquiera, pero, sin embargo, la unidad "Dialogs" está en alguna de las cláusulas "Uses" de dicha unidad, ¿Será añadida la unidad "Dialogs" al ejecutable de la aplicación de marras? ¿para qué? ¿con qué motivo?

Comprendo que puedo no hacer uso de la unidad "Dialogs" en la unidad en que se incluya, pero que dicha unidad "Dialogs" puede ser necesaria en otra unidad del proyecto, y, claro está, en este caso sería preciso añadir el código de la unidad "Dialogs", pero, no siendo esto así, ¿se añadiría la unidad "Dialogs" al ejecutable? Vuelvo a preguntarme, ¿para qué? ¿con qué motivo?

Y yendo un poco más lejos aún: ¿Se añadirá todo el código de la unidad "Dialogs" o solamente el código de las funciones, procedimientos, clases, en fin, todo el código de dicha unidad o solamente lo que estrictamente es necesario? Dudas de lunes tarde...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 05-09-2005 a las 18:20:59. Razón: (corrección del texto)
Responder Con Cita
  #5  
Antiguo 05-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por dec
No; se trata de un proyecto "vacío", recién creado, con un solo formulario, vaya, la plantilla que te prepara Delphi para que comienzes con el mismo.
Al tratarse de un proyecto vacío, siempre son iguales por lo que expliqué anteriormente de la dependencia de las Units.

Cita:
Empezado por dec
Si yo no hago uso de la unidad "Dialogs" en una unidad cualquiera, pero, sin embargo, la unidad "Dialogs" está en alguna de las cláusulas "Uses" de dicha unidad, ¿Será añadida la unidad "Dialogs" al ejecutable de la aplicación de marras? ¿para qué? ¿con qué motivo?
Si no haces uso de ninguna función / clase / declaración, solo se incluirá el código del initialization y finalization (implícito o explícito) de la unit. Como dije anteriormente, si o casualidad, el initialization o finalization utilizan funciones / clases / declaraciones de la unit en cuestión, o de otra unit, entonces el compilador se verá obligado a incluirlas a no ser que ese código pueda ser optimizado.

Cita:
Empezado por dec
Y yendo un poco más lejos aún: ¿Se añadirá todo el código de la unidad "Dialogs" o solamente el código de las funciones, procedimientos, clases, en fin, todo el código de dicha unidad o solamente lo que estrictamente es necesario? Dudas de lunes tarde...
En lo que respecta al código, solo agregará las funciones, procedimientos y clases que son "necesitadas" por tu código, y por el código de las cláusulas initialization y finalization. Ademas agregará los recursos de la unit al recurso de la aplicación (Ese es uno de los problemas de usar la unit Forms, porque utiliza controls y controls tiene Controls.res). Con respecto a las variables globales, solo son dimensionadas si el código compilado las utiliza, ya sea tu código o el de las units.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 06-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Queda la cuestión más clara. Muchas gracias, como siempre, Federico.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 06-09-2005
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 23
Sirkius Va por buen camino
Pues si. Mucho mas claro, no conocia lo de initialization, ahora ya todo tiene sentido... se inicialia de forma oculta y se incluye al menos una parte del unit...

PD: ahora a ver como lo borro, porque en el icarus solo analiza un archivo cada vez y muuuuuuy despacio.
__________________
SIN FIRMA :P
Responder Con Cita
  #8  
Antiguo 06-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Sirkius
(...) en el icarus solo analiza un archivo cada vez y muuuuuuy despacio.
Acaso estés analizando archivos ".pas", o sea unidades, por separado, pero, el programa Icarus puede analizar directamente archivos de proyecto ".dpr" con todo lo que esto conlleve. En lo de rápido o despacio no me meto... únicamente diré que lo descargé después de que jmariano diera noticia del mismo y el programa analizó más de 600.000 líneas de un proyecto dado en menos de un minuto. Dependerá también, pienso ahora, de la computadora, claro está: procesador, memoria RAM, en fin, esas cosillas
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 01:07:25.


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