AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wird eine Unit mehrfach im Programm eingebunden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wird eine Unit mehrfach im Programm eingebunden?

Ein Thema von Popov · begonnen am 26. Jan 2014 · letzter Beitrag vom 26. Jan 2014
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Wird eine Unit mehrfach im Programm eingebunden?

  Alt 26. Jan 2014, 14:56
Passend zu meiner Frage nach genulltem Objektspeicher, hier eine weitere kleinen Frage:

Wenn ich zwei Units habe und in beiden z. B. die SysUtils unter Uses einbinde, wie behandelt der Compiler das? Wird die SysUtils mehrfach eingebunden oder letztendlich auch nur einmal?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wird eine Unit mehrfach im Programm eingebunden?

  Alt 26. Jan 2014, 15:13
Nur einmal.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wird eine Unit mehrfach im Programm eingebunden?

  Alt 26. Jan 2014, 16:30
Du wolltest wohl darauf hinausgehen, ob die globalen Variablen dann mehrfaht vorhanden sind?
Hätte man sich eigentlich denken können, daß es so totaler Blödsinn währe,
denn es würde ja dem Sinn wiedersprechen, den Code gemeinsam zu verwenden.

Beim Kompilieren mit Packages, wird beim Laden der BPLs und der ladenden BPL/DLL/EXE auch gemeckert, wenn eine Unit mehrfach einkonpiliert wurde. Also in "beiden" BPL/DLL/EXE.

Aber wenn man zwar mit Packages arbeitet, aber die Unit vergssen hat in eine BPL aufzunhmen, dann läßt sich diese Unit in zwei/mehrere DLL/EXE einkompilieren und jeder hat seine eigene Instanz von globalen Variablen.



Setll dir mal vor, wie viele tausende Male z.B. die SysUtils in der VCL einkompiliert währe.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Jan 2014 um 16:34 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Wird eine Unit mehrfach im Programm eingebunden?

  Alt 26. Jan 2014, 17:12
Du wolltest wohl darauf hinausgehen, ob die globalen Variablen dann mehrfaht vorhanden sind?
Eigentlich nicht. Eigentlich wollte ich nur die Bestätigung, dass Units nicht mehrfach eingebunden werden. Das war auch vorher meine Annahmen, nur eben keine bestätigte Kenntnis.

Der Grund für meine Frage ist/war, weil ich in einer fremden Unit (nicht von Borland), die eigentlich sonst sehr gut programmiert war, einige Standard-Units per Compilerdirektiven eingebunden wurden, also Windows, SysUtils, usw.

Das ganze ergibt durchaus Sinn (zumindest je länger ich darüber nachdenke), denn abhängig von einigen Bedingungen werden einige Teile der Unit nicht benötigt, somit auch nicht die dazugehörigen Units.

Trotzdem, das sind Standard-Units die fast in jedem Programm auftauchen. Nicht dass ich per se in eine leere Unit Standard-Units einbinde, aber sind die ein mal drin, zumindest die üblichen Units, dann werfe ich SysUtils nicht später wieder raus, nur weil ich zuletzt dann doch nicht die StrToInt Funktion benötige. Denn wenn nicht hier, dann ist sie irgendwo anders eingebunden.

Also muss derjenige ein "Optimierungsfanatiker" sein, wenn er sogar solche Unit-Einbindung steuert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wird eine Unit mehrfach im Programm eingebunden?

  Alt 26. Jan 2014, 17:31
In der Unit Windows gibt es eigentlich keine globalen Dinge, somit lohnt es sich nicht die wegzulassen.

Aber es gibt einige NonVCL-Programmierer, welche Programme ohne die SysUtils erstellen, um möglichst kleine EXEn zu erzeugen.
Wenn nun eine Fremdkomponente diese Unit dennoch nutzt, dann "können"/wollen sie diese nicht verwenden.

Bei der SysUtils werden im Initialization so einige Sachen gemacht, die irgendwelche Dinge laden (und natürlich wird alles dazugehörige ins Programm einkompiliert) und dafür sorgen, daß so Einiges am laufenen Programm verändert werden, wie z.B. die Exceptionbehandlung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 03:21 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