Entwickler-Ecke

Sonstiges (Delphi) - nicht benötogte Uses aus Delphi Projekt entfernen


mk2 - Sa 25.09.04 20:45
Titel: nicht benötogte Uses aus Delphi Projekt entfernen
Hi,

ich benutze Delphi 4 Professional und arbeite an einem sehr umfangreichen Projekt bestehend aus mittlerweile fast 150 Units. Da viele der Units irgendwie miteinander kommunizieren sind in den meisten Units die uses-Listen entsprechend lang. Dabei befinden sich auch eine Menge Referenzen in diesen uses Klauseln, die gar nicht mehr benötigt werden. Aus Übersichtlichkeitsgründen würd ich diese unbenötigten uses gern entfernen. Meine Frage: Kann Delphi dass, oder gibt es ein freies QuellCodeAufräumTool, welches solche unnötigen Referenzen entfernt??? Weil per Hand wär mir das jetzt doch ein bißchen aufwändig. Falls es die Möglichkeit nicht gibt, hat das eurer Meinung nach negative Auswirkungen auf die Perfomance des Programms, wenn an vielen Stellen viele unbenötigte Dateien eingebunden sind?

MfG mk2


jasocul - Sa 25.09.04 21:01

Meines Wissens gibt es dafür kein Tool.
Delphi soll beim Compilieren angeblich jeden überflüssigen Quellcode rausoptimieren. Ob das immer so stimmt, habe ich aber noch nie wirklich überprüft. Ist nach meiner Ansicht auch nicht ganz einfach.


.Chef - Sa 25.09.04 21:40

Überflüssige Units werden nicht entfernt. Ein Tool dafür war echt maln Projekt. :)


Brueggendiek - Sa 25.09.04 23:38

Hallo!

Hier [http://www.peganza.com] gibt es ein Tool - heißt "Icarus Uses List Analyzer for Delphi". Etwas runterscrollen bitte. Ist sich übrigens Freeware!
Damit kann man sich sagen lassen, welche Einträge in der Uses-Liste flüssiger als Wasser - nämlich überflüssig - sind.
Zusätzlich gibt es Empfehlungen, welche Uses-Einträge von Interface nach Implementation verschoben werden können.

Wenn da mal was versehentlich rausfliegt, obwohl es benötigt wird, kann man es ja wieder eintragen (ist mir mal passiert).
Der kluge Programmierer kommentiert ja das zu Löschende erst mal nur aus und entfernt es erst dann entgültig, wenn er weiß, daß es klappt.

Gruß

Dietmar Brüggendiek


matze - So 26.09.04 09:17

was macht es denn für einen unterschied ob die uses im interface oder implementation teil stehen ?


mk2 - So 26.09.04 12:07

Vielen Dank, genau sowas hab ich gesucht.

Zu der Frage mit dem Interface und Implementation Teil: Wenn du eine Unit bereits im Interface Teil benötigst, z.B. weil du eine Klasse deklarierst, die von einer Klasse in der anderen Unit abgeleitet ist, dann muss die unit im interface teil eingebunden werden. Sonst reichts im Implementation Teil aus. Ist aber eigentlich egal wo. Es gibt nur ein Problem, wenn du alle deine uses im interface teil stehen, hast: Zwei Units können dann nicht gegenseitig aufeinander verweisen: Das heißt wenn unit1 uses unit2 und unit2 uses unit1, dann muss wenigstens in einer der beiden units das uses im implementation teil stehen.

MfG mk2


matze - So 26.09.04 12:30

ah danke