Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Uses in jedem Unterprogramm neu einbinden ? (https://www.delphipraxis.net/168084-uses-jedem-unterprogramm-neu-einbinden.html)

nachtstreuner 4. Mai 2012 09:09

Uses in jedem Unterprogramm neu einbinden ?
 
Liebe Delphi-Gemeinde,

ich hätte mal eine allgemeine Verständnisfrage zum Aufbau einer Anwendung.

Ich habe ein Hauptprogramm [start.pas]
aus diesem Hauptprogramm rufe ich z.B. [Adresse.pas] auf
Adresse.pas ruft [DRUCK.pas] auf usw.

In der Start.pas werden standardmäßig mittels uses verschiedene Units eingebunden,
z.b. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, usw.

dieselben Units werden ebenfalls in Adresse.pas und Druck.pas per uses automatisch eingebunden.

Reicht es nicht aus, diese Units einmal z.B. in STartpas einzubinden und dann in den anderen Unterprogrammen zu löschen ?

Danke schonmal für die interessannten Beiträge

Bernhard Geyer 4. Mai 2012 09:11

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Zitat:

Zitat von nachtstreuner (Beitrag 1164813)
Reicht es nicht aus, diese Units einmal z.B. in STartpas einzubinden und dann in den anderen Unterprogrammen zu löschen ?

Schon probiert was passiert wenn du das machst?

nachtstreuner 4. Mai 2012 09:18

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Hallo Bernhard,

sicherlich habe ich das, es hagelt dann Meldungen von wegen Undeklarierter Bezeichner... usw.

Aber wenn ich jetzt in der Adresse.pas über die uses Klausel, die Start.pas einbinde, in dieser sich wiederum in der uses schon die allgemeinen Units befinden, sollte das doch genügen. Oder ?

DeddyH 4. Mai 2012 09:28

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Da Du es bereits versucht hast, weißt Du ja schon die Antwort. Wenn ich jemanden kenne, der jemanden kennt, der wieder jemanden kennt, der weiß, wo Heinz Meier wohnt, heißt das ja nicht, dass ich jetzt Heinz Meiers Adresse kenne.

nachtstreuner 4. Mai 2012 09:48

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Hallo DeddyH,

schön erklärt ! :thumb:

Trotzdem wäre es meiner Meinung nach schöner und übersichtlicher, wenn die Units nur einmal im gesamten Projekt per Uses eingebunden werden und dann allen Unterprogrammen bekannt wären.

Danke für die Antworten

himitsu 4. Mai 2012 09:49

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Nein.

Soll auf etwas von einer Unit zugegriffen werden, dann muß diese Unit auch in der Uses-Klausel der aufrufenden Unit drinstehn
und zwar direkt dort und nicht über irgendwelche andere Units.

Es gibt keine Vererbung oder sowas, bei den Uses-Einbindungen.
Grund: Typenbezeichner sind über mehrere Units nicht eindeutig und somit gäbe es keine eindeutige Beziehung, wenn die Uses nicht direkt angegeben sind.


Was man höchstens versuchen könnte, das sind Include-Dateien, aber ob man damit was verbessert?

MyDefaultUnits.inc
Code:
Windows, SysUtils, Irgendwas
und dann
Delphi-Quellcode:
uses
  {$INCLUDE MyDefaultUnits.inc}, Forms, Sonstwas;

Nja, Projekt-Global sowas wie mit System und SysInit währe manchmal nicht schlecht, aber damit könnte man sich andere Probleme einhandeln ... eben wenn es doppelte Typenbezeichner gäbe ... dann kommt man nur noch über den Namespac dran, da man diese "autoamtischen" Units nicht in der Usesklausel verschieben kann (da sie dort nicht drinstehn).

jaenicke 4. Mai 2012 09:55

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Zitat:

Zitat von nachtstreuner (Beitrag 1164827)
Trotzdem wäre es meiner Meinung nach schöner und übersichtlicher, wenn die Units nur einmal im gesamten Projekt per Uses eingebunden werden und dann allen Unterprogrammen bekannt wären.

Übersichtlicher? Wenn du z.B. 10.000 Units hast und die alle in einer einzigen Unit eingebunden werden z.B., so dass niemand weiß welche Unit nun wirklich welche benötigt? :shock:
Ich glaube du stellst dir das ganze gerade für sehr kleine Projekte vor. Überlege einmal was das für größere Projekte heißt, an denen viele Personen arbeiten. ;-)

Das widerspräche auch schon der Kapselung der einzelnen Teile einer Software. Im Gegenteil ist es besser, je weniger die einzelnen Teile voneinander abhängen und voneinander wissen, da man sonst kaum sinnvolle Unit- und Integrationstests durchführen kann.

Davon ganz abgesehen solltest du dir einmal anschauen wie der Compiler die Unit-Hierarchien parst und kompiliert. Das würde so nämlich gar nicht umsetzbar sein. Das geht schon beim Ausführen der initialization Abschnitte in der richtigen Reihenfolge los...

PMM 4. Mai 2012 12:33

AW: Uses in jedem Unterprogramm neu einbinden ?
 
Wem die bisherigen Antworten nicht genügen: Es wäre auch der Tot jeder Wiederverwendung, denn ein Unit könnte dann nur im Originalprojekt verwendet werden (oder in einem, dass zufällig die erforderlichen, aber dann ja unbekannten, Units schon einbindet...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 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