Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi uses Bereich (https://www.delphipraxis.net/51371-uses-bereich.html)

Surrounder 11. Aug 2005 07:11


uses Bereich
 
Hallo Forum,

ich habe mal eine Frage zum uses Bereich in Delphi. Mich beschäftigt das schon eine weile, aber so richtige Sinnvolle informationen habe ich noch nirgends gefunden.

Jede Unit die ich da einbinde die nicht zu meinem Projekt selbst gehört oder die eingetragen wird weil ich eine entsprechende Komponente einbinde wird doch mit in mein finales Programm compiliert.

Da ich noch ziemlich viel Experimentiere und auch Komponenten teset wächst mein uses Bereich ziemlich rasch. Wenn ich dann Komponenten aus meinem Projekt entferne bleiben aber die Einträge im uses Bereich zurück.

Was ich mich jetzt Frage ist, wird dann nur mein Compiliervorgang langsamer, und merkt der Compiler dass er aus der Unit nix braucht, oder wird meine entgültige Exe einfach größer weil er viel nutzloses Zeug das ich nicht brauche mit compiliert :?:

Wie genau macht ihr denn das mit dem uses Bereich oder mach ich mir da jetzt in die falsche Richtung gedanken :gruebel:

semo 11. Aug 2005 07:22

Re: uses Bereich
 
wenn du ne komponente wieder entfernst, dann entferne ich auch immer gleich die entsprechende Unit, die über uses eingebunden wird.
der compiler compiliert diese Unit ja sonst mit und die erzeugte Datei ist unsinnigerweise noch größer als geplant....

wenn du nach deinem test genau weißt was du benötigst, was hindert dich daran noch einmal das projekt neu zusammenzustellen? ist doch ein aufwand von 5 minuten oder?

leddl 11. Aug 2005 07:50

Re: uses Bereich
 
:gruebel: Ich möchte jetzt nichts falsches erzählen, aber ist das nich Hinz wie Kunz, wieviele Units in den uses stehen? Der Compiler schnappt sich doch immer nur das raus, was wirklich benötigt wird.

Surrounder 11. Aug 2005 07:54

Re: uses Bereich
 
Ähm genau das war ja meine Frage, merkt das der Compiler und compiliert das nicht mit rein oder wird die Exe dadurch größer :hi:

Ich habe mir vorher keine Gedanken darum gemacht. Ehrlich gesagt weiß ich nicht welche units ich brauche und welche nicht bzw. welche zu welcher Komponente gehört. Ich weiß ja schon gar nicht mehr welche ich alle getestet habe.

Gibt es keine Möglichkeit heraus zu finden welche dass tatsächlich verwendet werden und welche nicht?

leddl 11. Aug 2005 08:04

Re: uses Bereich
 
Klar, immer eine Unit aus den uses löchen und compilieren. Wenn der Compiler meckert, brauchst du sie. ;)

Surrounder 11. Aug 2005 08:06

Re: uses Bereich
 
Zitat:

Zitat von leddl
Klar, immer eine Unit aus den uses löchen und compilieren. Wenn der Compiler meckert, brauchst du sie. ;)

naja ich dachet da eine eine elegante Methode :drunken:

leddl 11. Aug 2005 08:08

Re: uses Bereich
 
Ich kenne nichts besseres. Wenn aber jemand was weiß, würde mich das auch interessieren. :)

semo 11. Aug 2005 08:11

Re: uses Bereich
 
delphi 2005 verwenden, da passiert das schon automatisch ne?
oder auf eclipse und javaprogrammierung umsteigen :wink:

Master_RC 11. Aug 2005 08:12

Re: uses Bereich
 
bei den standard-kompos von delphi musste einfach nur deren hilfe-eintrag lesen, also:

TButton platzieren, markieren und F1 drügge :stupid:

dann steht eigentlich immer dabei, welche unit(s) das ding braucht ;)

bei den *nicht*-standard-kompos gibts hoffentlih readmes :)

wenn nicht, dann verfolge Surrounders Strategie ;)

leddl 11. Aug 2005 08:27

Re: uses Bereich
 
Inwiefern passiert das bei D2k5 automatisch? Werden da beim Compilieren nicht verwendete Units aus den uses gelöscht?

@Master: Inwiefern hilft das, die uses automatisch aufzuräumen? :gruebel:

semo 11. Aug 2005 08:33

Re: uses Bereich
 
ich glaube da werden genau wie in eclipse vorschläge gemacht, bin mir da aber nicht mehr so sicher. musst du dir mal anschauen...

leddl 11. Aug 2005 08:35

Re: uses Bereich
 
:gruebel: Ich benutze die PE, aber das is mir bisher noch nich aufgefallen... Oder war das ein extra Menupunkt?

Master_RC 11. Aug 2005 08:52

Re: uses Bereich
 
Zitat:

Zitat von leddl
@Master: Inwiefern hilft das, die uses automatisch aufzuräumen? :gruebel:

das könnt ich mir bei den anderen posts auch denken, aber es ist enigstens ne notlösung ;)

vielleicht hilft es ja auch bei einem projekt aufzuschreiben (man habe den zettel erfunden), welche unit sman verwendet und welche rauskommen könnten, etc.
(iss jetzt auch net wirklich automatisch, aber immerhin ne nötlösung...)

Flocke 11. Aug 2005 08:58

Re: uses Bereich
 
Zitat:

Zitat von leddl
:gruebel: Ich möchte jetzt nichts falsches erzählen, aber ist das nich Hinz wie Kunz, wieviele Units in den uses stehen? Der Compiler schnappt sich doch immer nur das raus, was wirklich benötigt wird.

Nicht wenn die Units initialization und finalization benutzen!

s14 11. Aug 2005 09:01

Re: uses Bereich
 
Es gibt auch einen "Uses List Analyzer for Delphi".
Ist von Peganza und Freeware.

http://www.peganza.com

Steve 11. Aug 2005 09:05

Re: uses Bereich
 
Es gibt noch einen solchen Analyzer: [google]ICARUS "Uses List Analyzer"[/google] Hab den schon oft eingesetzt und noch nie Probleme damit gehabt, hat immer einwandfrei funktioniert :thumb:

Gruß
Stephan :dance:


edit: Unfug, ich seh grad, dass Icarus genau die Freeware-Version bzw. einTeil des Pascal-Analyzers ist, die Peganza anbietet :wall:

DevilsCamp 11. Aug 2005 09:47

Re: uses Bereich
 
Es ist vollkommen Schnuppe, wie viele Units Du in der USES-Liste stehen hast.
Der Compiler holt sich aus den entsprechenden Units nur das, was wirklich benötigt wird.

Sonst wäre ja JEDES Programm schon mind. 1.5MB groß (eine leere NEUE Anwendung hat allerdings nur 361KB)

Diese Eigenschaft hatte Borland schon zu Turbo/Borland Pascal Zeiten eingebaut und weshalb sollte das rausfliegen?

Flocke 11. Aug 2005 09:52

Re: uses Bereich
 
Zitat:

Zitat von DevilsCamp
Es ist vollkommen Schnuppe, wie viele Units Du in der USES-Liste stehen hast.
Der Compiler holt sich aus den entsprechenden Units nur das, was wirklich benötigt wird.

Sonst wäre ja JEDES Programm schon mind. 1.5MB groß (eine leere NEUE Anwendung hat allerdings nur 361KB)

Diese Eigenschaft hatte Borland schon zu Turbo/Borland Pascal Zeiten eingebaut und weshalb sollte das rausfliegen?

Das ist (so formuliert) Unsinn!

Delphi hat einen intelligenten Linker, der sich aus jeder Unit nur den Code herausholt, der wirklich benötigt (d.h. referenziert) wird.

Allerdings trifft das auch auf den Code zu, der in den Units hinter initialization und finalization angegeben wird. Und insbesondere virtuelle Funktionen von referenzierten Klassen müssen immer übernommen werden, da weiß der Linker nämlich überhaupt nicht, ob die benutzt werden.

Das ist ja auch der Grund dafür, dass ein Non-VCL-Programm, wenn du die Unit Classes in die uses-Liste setzt, auf einmal fast 64k größer ist, ohne dass du sonst etwas am Code änderst.

DevilsCamp 11. Aug 2005 10:03

Re: uses Bereich
 
Habe ich doch gesagt:
Es wird nur das aus den Units geholt, was wirklich benötigt wird ;)


Ich habe es nur nicht so ausführlich erklärt...

Flocke 11. Aug 2005 10:13

Re: uses Bereich
 
Zitat:

Zitat von DevilsCamp
Habe ich doch gesagt

Nein!
Zitat:

Zitat von DevilsCamp
Es wird nur das aus den Units geholt, was wirklich benötigt wird

das stimmt zwar (wenn man von nicht benötigten virtuellen Funktion absieht), aber
Zitat:

Zitat von DevilsCamp
Es ist vollkommen Schnuppe, wie viele Units Du in der USES-Liste stehen hast.

das ist definitiv falsch. Wenn dem so wäre, dann könnte Borland (und würde vielleicht auch) den kompletten Bibliothekscode (System, SysUtils, Classes, Controls, Forms, usw.) in eine einzige Unit packen.

DevilsCamp 11. Aug 2005 10:39

Re: uses Bereich
 
Zitat:

Zitat:

Zitat von DevilsCamp
Es wird nur das aus den Units geholt, was wirklich benötigt wird

das stimmt zwar (wenn man von nicht benötigten virtuellen Funktion absieht), aber
Für den Linker werden die virtuellen Methoden nach Deiner Ausführung schon benötigt, daher fallen sie in den Bereich "Wird benötigt" ;)

Zitat:

Zitat:

Zitat von DevilsCamp
Es ist vollkommen Schnuppe, wie viele Units Du in der USES-Liste stehen hast.

das ist definitiv falsch.
Gut, da habe ich mich wohl geirrt.

Zitat:

Wenn dem so wäre, dann könnte Borland (und würde vielleicht auch) den kompletten Bibliothekscode (System, SysUtils, Classes, Controls, Forms, usw.) in eine einzige Unit packen.
Aber ich glaube, dass es selbst dann die gleichen Units geben würde. Oder hast du schon mal versucht zig Klassen in EINE Unit zu packen OHNE anschließend (trotz Kommentare) den Überblick zu verlieren?

Flocke 11. Aug 2005 10:57

Re: uses Bereich
 
Zitat:

Zitat von DevilsCamp
Aber ich glaube, dass es selbst dann die gleichen Units geben würde. Oder hast du schon mal versucht zig Klassen in EINE Unit zu packen OHNE anschließend (trotz Kommentare) den Überblick zu verlieren?

Klar würden man nie alles in eine Unit packen!
Hören wir mal auf zu streiten. Frieden? (Hand hinhalt)

DevilsCamp 11. Aug 2005 10:59

Re: uses Bereich
 
Zitat:

Zitat von Flocke
Frieden? (Hand hinhalt)

Akzeptier...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz