AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unbenutzte Improrts finden?

Ein Thema von ghost007 · begonnen am 21. Mär 2010 · letzter Beitrag vom 22. Mär 2010
Antwort Antwort
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#1

Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 19:20
Der Titel sollte eigentlich schon alles sagen.
Ich würde aus den uses gerne alles rauswerfen, was ich nicht brauche. Gibt es da irgendeinen Trick?
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 19:24
ICarus könnte dir helfen
Lars
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 19:27
Das sollte eigentlich automatisch vom Linker entfernt werden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 19:35
Warum sollte der Linker das tun?

Sofern man eine Unit einbindet, die einen Initialization-Abschnitt hat, kann der Linker nicht entscheiden, ob die Unit wirklich nicht gebraucht wird, oder ob der Teil unter Initialization aus irgend einem Grund wichtig ist.
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 20:11
Auf StackOverflow findest du einiges zum Thema.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#6

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 23:10
Danke, ICarus ist sehr gut, kann ich nur weiterempfehlen
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#7

Re: Unbenutzte Improrts finden?

  Alt 21. Mär 2010, 23:39
PS: Nur weil eine Unit al "nicht genutzt" angezeigt wird, da nicht in dieser Unit "extern" aufgerufen wird, heißt es noch lange nicht, daß diese Unit wirklich nicht genutzt wird.

z.B. einige ShareMem-Units und die SysUtils sind solche Fälle, denn sie richten vorallem etwas ein, welches über Umwege genutzt wird.

Die SysUtils richtet z.B. eine "bessere"/schönere Exceptionbehandlung ein, welche dann über die System-Unit behandelt wird.

Delphi-Quellcode:
program Test;

var i: Integer;

begin
  i := 0;
  if 123 div i = 8 then ;
end.
Delphi-Quellcode:
program Test;

uses SysUtils;

var i: Integer;

begin
  i := 0;
  if 123 div i = 8 then ;
end.
So, wie man sieht, wird nichts direkt aus der SysUtils verwendet, welches wohl auch sowas wie ICarus anmerken sollte, aber dennoch kann es nötig/gewollt sein, daß diese Unit eingebunden ist.
Also ein bissl nachdenken und nicht gleich alles rauslöschen, welches angezeigt wird, sollte man schon.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Unbenutzte Improrts finden?

  Alt 22. Mär 2010, 05:47
Der Uses Cleaner Wizard aus den cnWizards ist direkt in die IDE integriert, und kann z.B. Units mit initialization automatisch ausfiltern.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#9

Re: Unbenutzte Improrts finden?

  Alt 22. Mär 2010, 11:48
Zitat von mjustin:
Der Uses Cleaner Wizard aus den cnWizards ist direkt in die IDE integriert, und kann z.B. Units mit initialization automatisch ausfiltern.
Nja, es gibt auch Beispiele, wo soeine Unit dennoch nicht nötig ist.

Hier hat man z.B. einen Initialization-Block, aber ohne Verwendung von NutzeObjekt wäre das Objekt nicht nötig und die ganze Unit könnte entfallen.
Delphi-Quellcode:
unit MyUnit;

interface
  function NutzeObjekt: String;

implementation
  var Objekt: TStrings;

  function NutzeObjekt: String;
  begin
    Result := Objekt.Text;
  end;

  procedure ErstelleObjekt;
  begin
    Objekt := TStringList.Create;
    Objekt.Text := Irgendwas;
  end;

  procedure LöscheObjekt;
  begin
    Objekt.Free;
  end;

initialization
  ErstelleObjekt;

finalization
  LöscheObjekt;

end.
Bei sowas würde mir ein Sprachkonstrukt gefallen, wo man sagen könnte wann etwas einkompiliert(gelinkt werden soll.

z.B.:
Delphi-Quellcode:
initialization
  {$IFUSED 'NutzeObjekt'}
    ErstelleObjekt;
  {$ENDIF}

finalization
  {$IFUSED 'NutzeObjekt'}
    LöscheObjekt;
  {$ENDIF}

end.
Somit könnte der Compiler/Linker erkennen daß nichts in Initialization und Finalization gemacht wird und würde somit nicht einbinden müssen, bzw. nur eine leere Unit, welche er ja eh wegläßt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Unbenutzte Improrts finden?

  Alt 22. Mär 2010, 12:41
Zitat von himitsu:
Bei sowas würde mir ein Sprachkonstrukt gefallen, wo man sagen könnte wann etwas einkompiliert(gelinkt werden soll.

z.B.:
Delphi-Quellcode:
initialization
  {$IFUSED 'NutzeObjekt'}
    ErstelleObjekt;
  {$ENDIF}

finalization
  {$IFUSED 'NutzeObjekt'}
    LöscheObjekt;
  {$ENDIF}

end.
Somit könnte der Compiler/Linker erkennen daß nichts in Initialization und Finalization gemacht wird und würde somit nicht einbinden müssen, bzw. nur eine leere Unit, welche er ja eh wegläßt.
Schau mal hier. Vielleicht kann man damit was in der Richtung tricksen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz