Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo puedo saber qué unidades usan una unidad determinada? (https://www.clubdelphi.com/foros/showthread.php?t=63596)

noob 21-02-2009 12:19:34

¿Cómo puedo saber qué unidades usan una unidad determinada?
 
Hola, me gustaría saber si existe una forma rápida de saber qué unidades usan una unidad determinada.

Saludos.

roman 21-02-2009 16:09:21

¿A qué te refieres con unidad?

// Saludos

noob 21-02-2009 16:15:37

Me refiero a una unit.

Quiero saber qué units tienen en el uses una unit determinada.

Saludos.

roman 21-02-2009 16:24:47

¡Ah! Ja, ja, yo estaba pensando en unidades de medida o de disco.

Si tienes instalado GExperts, puedes usar el "Project Dependencies". Y si no lo tienes instalado, pues hazlo, es muy bueno y gratuito.

// Saludos

noob 21-02-2009 16:47:11

Muchas gracias amigo.

rcuevas 25-11-2009 11:10:50

Diferencia entre unidad incluida y unidad utilizada
 
Buenas Roman,

Yo tengo una duda muy parecida, y tengo GExperts instalado.
La diferencia es que, en mi caso, no quiero saber qué unidades estoy incluyendo, si no qué unidades estoy usando, con el objetivo de eliminar aquellas que estoy incluyendo pero no usando, y que no hacen otra cosa que ocupar memoria en mi programa.

He hecho una pequeña comprovación en GExperts, apra ver si era capaz de darse cuenta. He abierto "Project Dependencies" y he ido al detalle de una unidad concreta, donde he visto que, efectivamente, me listaba todas las unidades incluidas mediante la cláusula "uses" en esa unidad.

A continuación he modificado el código añadiendo una nueva unidad a la cláusula uses (aunque no he utilizado nada de esa unidad), y he guardado los cambios. Le he dicho a la ventana "Project Dependencies" que actualizase, y, tristemente, me ha listado tb esa nueva unidad, con lo que no me sirve para mi objetivo.

Por lo tanto, llegados aquí, la pregunta es: ¿Conoces algún método automatizado para averiguar, dada una unidad, qué unidades son las estrictamente necesarias incluir?

Muchas gracias por tu tiempo.

Lepe 25-11-2009 14:31:18

cnpacks tiene la opción de "Clean uses", de hecho usa el código fuente de Gexpert en varios sitios. ;) www.cnpack.org

Casimiro Notevi 25-11-2009 14:32:47

cnpacks tiene lo que buscas.

Se me adelantó Lepe :)

rcuevas 25-11-2009 15:02:52

Gracias cracks!

roman 25-11-2009 18:01:34

Cita:

Empezado por rcuevas (Mensaje 347396)
con el objetivo de eliminar aquellas que estoy incluyendo pero no usando, y que no hacen otra cosa que ocupar memoria en mi programa.

Aunque coincido en que es buena práctica quitar esas unidades, también cabe mencionar que delphi no incluye en el ejecutable código que no se usa, de manera que, en realidad, no ocupan memoria en tu programa.

// Saludos

Al González 25-11-2009 20:45:55

Cita:

Empezado por roman (Mensaje 347419)
Aunque coincido en que es buena práctica quitar esas unidades, también cabe mencionar que delphi no incluye en el ejecutable código que no se usa, de manera que, en realidad, no ocupan memoria en tu programa.

Secundando a Román, cabe mencionar que sólo ocuparán espacio en el ejecutable (y claro está, memoria de proceso) si dichas unidades tienen código de inicialización, es decir, sección Initialization, la cual puede ir acompañada o no de una sección Finalization que también ocupará espacio.

Son estas secciones la mayor razón para eliminar de las cláusulas Uses las unidades que no deseamos utilizar.

Por ejemplo, si incluimos la unidad nativa Controls en el Uses de nuestro programa, el siguiente código y las referencias que él hace serán incluidos en el ejecutable, aunque nosotros no hagamos ninguna referencia explícita a elementos de dicha unidad:

Código Delphi [-]
initialization
  NewStyleControls := Lo(GetVersion) >= 4;
  InitControls;
  StartClassGroup(TControl);
  ActivateClassGroup(TControl);
  GroupDescendentsWith(TCustomImageList, TControl);
  GroupDescendentsWith(TContainedAction, TControl);
  GroupDescendentsWith(TCustomActionList, TControl);

finalization
  FreeAndNil(DockSiteList);
  DoneControls;
De la unidad Controls.pas de Delphi 7.

También puede pasar que hagamos referencia a una unidad que no tenga esas secciones especiales, pero que ésta, a través de sus propios Uses, haga referencia directa o indirecta a unidades que sí tengan inicialización y finalización.

Saludos incluidos.

Al González. :)


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

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