AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verfügbarkeit öffendlicher Units

Offene Frage von "LarsSchwencke"
Ein Thema von LarsSchwencke · begonnen am 17. Jan 2014 · letzter Beitrag vom 18. Jan 2014
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 11:24
Das angesprochene Verhalten war unter TP noch vorhanden.

ERin Blick in die D7 OH hilft hier weiter:
Zitat:
Die Reihenfolge der Units in der uses-Klausel bestimmt die Reihenfolge der Initialisierung dieser Units (siehe Der initialization-Abschnitt) und wirkt sich auf die Suche des Compilers nach den Bezeichnern aus. Wenn zwei Units eine Variable, eine Konstante, einen Typ, eine Prozedur oder eine Funktion mit identischem Namen deklarieren, verwendet der Compiler die Deklaration der in der uses-Klausel zuletzt angegeben Unit. Wollen Sie auf den Bezeichner in einer anderen Unit zugreifen, müssen Sie den vollständigen Bezeichnernamen angeben: Unitname.Bezeichner.

Eine uses-Klausel muss nur die Units enthalten, die direkt vom Programm bzw. von der Unit verwendet werden, in dem bzw. der die uses-Klausel steht. Referenziert beispielsweise Unit A Konstanten, Typen, Variablen, Prozeduren oder Funktionen, die in Unit B deklariert sind, muss die Unit B explizit in der uses-Klausel von Unit A angegeben werden. Referenziert B wiederum Bezeichner aus Unit C, ist Unit A indirekt von Unit C abhängig. In diesem Fall muss Unit C nicht in einer uses-Klausel in Unit A angegeben werden. Der Compiler benötigt jedoch Zugriff auf die Units B und C, während Unit A verarbeitet wird.

Das folgende Beispiel illustriert diese indirekte Abhängigkeit:

program Prog;
uses Unit2;
const a = b;
...
unit Unit2;
interface
uses Unit1;
const b = c;
...
unit Unit1;
interface
const c = 1;
...

Hier hängt das Programm Prog direkt von Unit2 ab, die wiederum direkt von Unit1 abhängig ist. Prog ist also indirekt von Unit1 abhängig. Da Unit1 nicht in der uses
-Klausel von Prog angeben ist, sind die in Unit1 deklarierten Bezeichner für Prog nicht verfügbar.

Damit ein Client-Modul compiliert werden kann, muss der Compiler Zugriff auf alle Units haben, von denen der Client direkt oder indirekt abhängt. Sofern der Quelltext dieser Units nicht geändert wurde, benötigt der Compiler nur die .DCU-Dateien (Windows) bzw. die .DCU/.DPU-Dateien (Linux), nicht jedoch die Quelltextdateien (.PAS). Wenn es sich bei dem Linkpartner um ein Package handelt.

Werden im interface-Abschnitt einer Unit Änderungen vorgenommen, müssen die von dieser Unit abhängigen Units neu compiliert werden. Werden die Änderungen dagegen nur im implementation- oder einem anderen Abschnitt einer Unit vorgenommen, müssen die abhängigen Units nicht neu compiliert werden. Der Compiler überwacht diese Abhängigkeiten und nimmt Neucompilierungen nur vor, wenn dies erforderlich ist.
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.076 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 12:23
Das Verhalten ist ja in jeder Delphiversion da, hat aber nichts mit dem Verhalten zu tun, das der Satz aus dem Buch impliziert. Dass man nämlich nicht nur über Code in einer zweiten Unit auf Bezeichner einer dritten Unit zugreifen kann, sondern direkt auf diese Bezeichner zugreifen kann. Das ging weder in Turbo Pascal noch in Delphi, zumindest nicht seit Turbo Pascal 6, früher kenne ich nicht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 15:44
Das angesprochene Verhalten war unter TP noch vorhanden.
Unsinn, das war noch nie in Turbo Pascal so vorhanden. Jedenfalls definitiv nicht unter TP7, mit dem ich das sicherheitshalber soeben noch einmal verifiziert habe, und das ja unmittelbarer Vorläufer von BP7 war.

In dieser Hinsicht ist die ganze Diskussion, beruhend auf der angeblichen Falschaussage der zitierten Quelle, allein durch die mangelhafte Wiedergabe des Zitats verursacht. Die ist nämlich in jeder nur denkbaren Weise unqualifiziert und fehlerhaft gemacht worden, sowohl inhaltlich als auch formal (und von der Rechtschreibung allein schon in der Wiedergabe des "Zitats" ganz zu schweigen).

In der Beschreibung der Autoren wird auch rein gar nichts fälschlich impliziert, wie leichtfertig unterstellt worden ist. Vielmehr beschreiben die Autoren des Buches (übrigens Walter Doberenz & Thomas Gewinnus, und der Titel heißt korrekt: "Borland Delphi 7. Grundlagen Profiwissen Kochbuch", erschienen im Verlag Hanser, München 2007) auf Seite 282 (Kapitel 6.1.2) das Vorgehen bei der querübergreifenden Verwendung mehrerer Units unmissverständlich korrekt, so wie das auch unverändert in allen Delphi-Versionen weiterhin der Fall ist.

Da der Verlag ausdrücklich die Wiedergabe auch nur von Teilen des Buches und dies selbst zum Lehrzweck ausdrücklich strikt untersagt hat, werde ich den betreffenden, oben angeblich "zitierten" Abschnitt hier natürlich nicht im kompletten und richtigen Wortlaut zitieren können.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 16:06
In dieser Hinsicht ist die ganze Diskussion, beruhend auf der angeblichen Falschaussage der zitierten Quelle, allein durch die mangelhafte Wiedergabe des Zitats verursacht. Die ist nämlich in jeder nur denkbaren Weise unqualifiziert und fehlerhaft gemacht worden, sowohl inhaltlich als auch formal (und von der Rechtschreibung allein schon in der Wiedergabe des "Zitats" ganz zu schweigen).
hm... wenn ich mir das bei Amazon anschaue steht da genau das (inhaltlich und natürlich ohne die Rechtschreibfehler) was der Threadersteller hier "zitiert" hat. Könnte es sein, dass hier unterschiedliche Versionen des Buches im Umlauf sind?

Grüße
  Mit Zitat antworten Zitat
LarsSchwencke

Registriert seit: 28. Sep 2012
19 Beiträge
 
#5

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 16:26
Es gibt zwei Bucher.
Habe beide.

Grundlagen und Profiwissen

und Kochbuch.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 16:42
@Lars: Danke!
  Mit Zitat antworten Zitat
LarsSchwencke

Registriert seit: 28. Sep 2012
19 Beiträge
 
#7

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 19:40
@ASM

nur ist es so, dass ich das Buch, das Du hier aufführst gar nicht meine.
Es ist schon richtig wie ich es geschrieben habe.

Der Titel des Buches lautet:

Borland Delphi 7 Grundlagen und Profiwissen,
die Autoren, Walter Doberenz und Thomas Kowalski.

Da Du ja über das Wissen verfügst, könntest Du uns doch, ohne zu zitieren, mitteilen was mit diesem Satz gemeint ist.
Ich habe es so verstanden wie ich es oben beschrieben habe.

Erleuchte mich.

MfG
Lars
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Verfügbarkeit öffendlicher Units

  Alt 17. Jan 2014, 22:09
Ok, also 2 Bücher ± gleichen Inhalts:
2002: "Borland Delphi 7 - Grundlagen und Profiwissen" = ISBN 978-3-446-22316-5
2007: "Borland Delphi 7 -- Grundlagen, Profiwissen, Kochbuch" = ISBN 978-3-446-41216-3
zu letzterem: O-Ton Hanser Verlag "Diese Neuauflage vereint die erfolgreichen Bücher "Borland Delphi 7 - Grundlagen und Profiwissen" und "Borland Delphi 7 - Kochbuch" des bekannten Autorenduos Walter Doberenz & Thomas Gewinnus in einem Band."

Wie dem auch sei: die Autoren sind ausgewiesen als Professor Dr.-Ing. habil Walter Doberenz, Altenburg, und Dipl.-Ing. Thomas Gewinnus, Frankfurt/Oder. Sie entstammen also beide weder der philosophischen noch der theologischen Fakultät. Es ist daher nicht anzunehmen, dass beide so unbedarft sind, den korrekten Sachverhalt nicht zu kennen oder womöglich ignorieren zu wollen - unabhängig von unterschiedlichen Editionen des Buches. Und wenn solche Autoren ein derartiges Fachbuch - gleich welcher Version - schreiben, dann doch zweifelsohne nicht derart, dass ihre Ausführungen etwas kontrahär wesentlich anderes implizieren als was sie gemäß dem konkreten, authentischen Sachverhalt aussagen wollen. Und dieser Sachverhalt hinsichtlich der Verwendung multipler Units ist nun einmal seit TPs seeligen Zeiten absolut eindeutig klar (s.o.).

Der Sachverhalt ist von den Autoren zwar in aller Kürze, jedoch völlig korrekt beschrieben, wenn man die Ausführungen komplett liest, vor allem auch logisch konsequent nachvollzieht und man sie nicht auf einen einzigen Satz aus dem Kontext herausgerissen reduziert. In der vollständigen Aussage heißt es nämlich unmittelbar vor dem in #6 zitierten Satz explizit (ich riskiere dieses Zitat jetzt einmal ohne ausdrückliche schriftliche Genehmigung des Verlags): "Ebenso wie ein Programm kann auch eine Unit auf andere Units zugreifen. Letztere müssen, durch Kommas getrennt, nach dem reservierten Wort uses aufgelistet werden." Und in diesem kompletten Kontext kommt dem dann folgenden Satz (siehe in #6) eine ganz andere logische, nämlich auf dieses sozusagen imperative Mandat bezogene Beschreibung des zutreffenden Sachverhaltes zu als hier fälschlicherweise unterstellt worden ist.

Letztlich entscheidend ist aber hier wohl doch, dass es diese eingangs vermutete Divergenz im Verhalten von TP vs. D7ff. niemals gab und vielmehr alles auf einem Missverständnis infolge fehlerhafter Interpretation beruhte.
  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 16:22 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