![]() |
Verfügbarkeit öffendlicher Units
Hallo,
mit der verfügbarkeit öffendlich deklarierter Units stehe ich offensichtlich auf Kriegsfuß. Auch scheint das Kapittel 6.1.2 im Borland Delphi 7 Grundlagen und Profiwissen bei Delphi XE4 nicht zu funktionieren. Mein Problem, 3 Units. Die Unit 2 verwendet die Unit 3. Die Unit 1 die Unit 2 und sollte aber auch die Funktionen der Unit 3 nutzen können. Sollte es nicht so funktionieren? Unit3:
Delphi-Quellcode:
Unit2
unit Unit3;
interface function Test3(): integer; implementation function Test3(): integer; begin ... end; end.
Delphi-Quellcode:
Unit1
unit Unit2;
interface uses Unit3; function Test2(): integer; implementation function Test2(): integer; var iCounter2: integer begin iCounter2 := Test3(); end; end.
Delphi-Quellcode:
Kann mir jemand mitteilen, wie sich dies realisieren läßt?
unit Unit1;
interface function Test1(): integer; implementation uses Unit2; function Test1(): integer; var iCounter1: integer begin iCounter1 := Test3(); // E2003 Undeklarierter Bezeichner: 'Test3' end; end. Vielen Dank für alle Infos. MfG Lars |
AW: Verfügbarkeit öffendlicher Units
Wenn Unit1 Funktionen aus Unit3 benutzen soll, muss sie auch Unit3 kennen.
|
AW: Verfügbarkeit öffendlicher Units
Alle die Units, die du nicht innerhalb des interfaces brauchst in der uses-Liste unterhalb der implementation angeben.
Delphi-Quellcode:
unit xxx;
Interface uses ..., ...; // hier wenn es im Interface gebraucht wird implementation uses ..., ...; // hier wenn es Nicht im Interface gebraucht wird |
AW: Verfügbarkeit öffendlicher Units
Zitat:
gruss |
AW: Verfügbarkeit öffendlicher Units
Das ist ja die logische Konsequenz des Gesagten.
|
AW: Verfügbarkeit öffendlicher Units
Ja sicher,
das kann ich machen, war nur nicht meine Idee, und in dem Buch steht: Ich zietiere aus dem Buch Borland 7 Grundlagen und Profiwissen: "Öffendlich (public) Deklaparion In diesem Fall erscheint die uses-Klausel unmittelbar nach dem Wort interface. Programme bzw. andere Units, die die Aktuelle Unit benutzen, können also auch zusätzlich auf die hier angeführten Units zugreifen." Dann sollte es ja auch funtionieren, die Frage, ist es bei Delphi XE4 anders? MfG Lars |
AW: Verfügbarkeit öffendlicher Units
Das wäre mir jetzt neu, in dem Punkt scheint im Buch einfach etwas Falsches zu stehen.
|
AW: Verfügbarkeit öffendlicher Units
In den Büchern waren mir auch noch ein paar andere Punkte aufgefallen. Die hatte ich damals auch an die Autoren geschickt, habe aber keinerlei Antwort bekommen.
Das war eines der wenigen Bücher, die ich beim Lernen von Delphi in die Hand genommen hatte. Geholfen haben sie mir nicht wirklich. Ausprobieren, die mitgelieferten Beispiele und Quelltexte und die Hilfe haben mir viel mehr geholfen. |
AW: Verfügbarkeit öffendlicher Units
Du kannst dir einfach merken, daß man nur das sieht, was "direkt" in den in Uses angegebenen Units enthalten ist
und zwar in der Reihenfolge von der letzten zur ersten Unit. Das ist also ganz einfach komplett falsch, was da steht. Von dem, was im Interface ist, wird alles, was nicht private (in Klassen), grundsätzlich auch erstmal nicht protected und was auch keine Unit ist, in der aufrufenden Unit verfügbar sein, also nur das, was auch "wirklich" da drin "sichtbar" ist. Was man machen kann, ist z.B. einen Alias von einem Typ oder die Kopie einer Konstante, bzw. die Umleitung einer Funktion aus der Unit3 in Unit2 anzulegen und diese dann in Unit1 zu nutzen. Bei einem gleichnamigen "Alias" ist es dann egal, ob das Original aus Unit3 oder der Alias aus Unit2 in Unit1 verwendet wird, da es intern der selbe Typ ist. |
AW: Verfügbarkeit öffendlicher Units
Das angesprochene Verhalten war unter TP noch vorhanden.
ERin Blick in die D7 OH hilft hier weiter: Zitat:
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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