Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nicht benötigte Units bereinigen (https://www.delphipraxis.net/209257-nicht-benoetigte-units-bereinigen.html)

horstmeyer 16. Nov 2021 10:32

Nicht benötigte Units bereinigen
 
Hallo zusammen,

ich suche nach einer einfachen Möglichkeit alle Units zu finden, die im aktuellen Projekt nicht angeprochen und somit nicht benötigt werden. Hat einer einen Tipp wie man dies am einfachsten bewerkstelligen kann? Vielen Dank.

Viele Grüße
Horst Meyer

Poelser 16. Nov 2021 10:42

AW: Nicht benötigte Units bereinigen
 
Hallo,

CN-Pack installieren, das ereugt dir im Menü einen Uses-Cleaner.

LG Edmund

Sinspin 16. Nov 2021 10:45

AW: Nicht benötigte Units bereinigen
 
Hallo,

so einfach ist das allerdings nicht.
Units haben
Delphi-Quellcode:
initialisation
und
Delphi-Quellcode:
finalization
Abschnitte. Schon ihre reine Anwesenheit im Projekt kann also den Programmablauf beeinflussen.
Zum Beispiel Units die weitere grafik-datei-formate bereitstellen. Die registrieren sich selbst, werden aber scheinbar nirgendwo verwendet.

BerndS 16. Nov 2021 10:51

AW: Nicht benötigte Units bereinigen
 
Zitat:

Units haben initialisation und finalization Abschnitte.
Das kann man im CN-Pack Uses Cleaner recht gut einstellen und eine Liste zu überspringender Units ist auch enthalten.

dummzeuch 16. Nov 2021 10:55

AW: Nicht benötigte Units bereinigen
 
Alternativ könnte man die Map-Datei überprüfen, aber:
  1. Ist das eine Menge manuelle Arbeit (ich kenne kein Tool dafür)
  2. werden dort Units, die keinen Code enthalten, aber z.B. Resource-Strings nicht aufgeführt

Uwe Raabe 16. Nov 2021 11:39

AW: Nicht benötigte Units bereinigen
 
Pascal Analyzer (auch die Lite Version) gibt dazu eine Übersicht. Da wird auch eventueller Implementation Code berücksichtigt - da muss man dann halt reinschauen ob man den braucht.

Delphi.Narium 16. Nov 2021 13:03

AW: Nicht benötigte Units bereinigen
 
Ausführliche MAP-Datei erstellen, alle Zeile, die mit Line numbers for beginnen, raussuchen. Sie enthalten alle Units, aus denen etwas ins Kompilat übernommen wurden.

Sollte für den Anfang eigentlich erstmal ausreichen.

Und wenn ich das bei meinem ollen Delphi 7 richtig sehe, sind Units, die nur Resource-Strings enthalten, auch in der MAP-Datei aufgeführt. Jedenfalls finde ich in den MAP-Dateien von Programmen, die Indy nutzen auch die IdResourceStringsCore.pas, und die enthält (neben Kommentaren) nur Resource-Strings.

Mal eben in PascalScript hingedaddelt:
Delphi-Quellcode:
program Test;

procedure CheckUnits(sFile : String);
var
  i      : Integer;
  s      : String;
  slMap  : TStringList;
  slUnits : TStringList;
begin
  slMap := TStringList.Create;
  slMap.LoadFromFile(sFile);
  slUnits := TStringList.Create;
  for i := 0 to slMap.Count - 1 do begin
    if Copy(slMap[i],1,16) = 'Line numbers for' then begin
      s := Copy(slMap[i],18,1024);
      s := Copy(s,1,Pos('(',s) - 1);
      slUnits.Add(s);
    end;
  end;
  slUnits.Sort;
  sFile := ChangeFileExt(sFile,'.UsedUnits');
  slUnits.SaveToFile(sFile);
  slUnits.Free;
  slMap.Free;
end;

begin
  CheckUnits('Programmname.map');
end.
Sollte so übernommen werden können.

Jens01 16. Nov 2021 14:55

AW: Nicht benötigte Units bereinigen
 
https://github.com/norgepaul/DUDS

Mit dem Delphi Unit Dependency Scanner mache ich das.
Der zeigt, u.a. von wie vielen Units die einzelne Unit genutzt wird. Wenn man den Trick raus hat, dann kann man sehr schön alle unnötigen Units aus dem Projekt werfen.
Alle Units, die nur von einer Unit -also von der DPR- genutzt werden, sind unnötig.

freimatz 16. Nov 2021 15:00

AW: Nicht benötigte Units bereinigen
 
Warum einfach wenn es auch umständlich geht. :wink:

Das einzig sinnvolle:

Zitat:

Zitat von Poelser (Beitrag 1497632)
Hallo,

CN-Pack installieren, das ereugt dir im Menü einen Uses-Cleaner.

LG Edmund


Uwe Raabe 16. Nov 2021 15:04

AW: Nicht benötigte Units bereinigen
 
Zitat:

Zitat von freimatz (Beitrag 1497666)
Das einzig sinnvolle:

Na ja, da kann man sicher geteilter Meinung sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Seite 1 von 3  1 23      

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