![]() |
Delphi-Version: 5
Enum: Sichtbarkeit der Werte über mehrere Units "übersetzen"
Hallo,
ich habe 3 Units:
Delphi-Quellcode:
Unit3 soll Unit1 nicht kennen. Den Typ TMyEnum kann ich "übersetzen", um ihn in Unit3 verfügbar zu machen, aber wie mache ich die Werte dazu verfügbar?
unit Unit1; // Backend-Unit
interface type TMyEnum = (meEins, meZwei); // ursprüngliche Deklaration TClass1 = class(TObject) MyEnum: TMyEnum; end; ... //------------------------------------- unit Unit2; // Interface-Unit interface uses Unit1; type TMyEnum = Unit1.TMyEnum; // "Übersetzung" TClass2 = class(TObject) private FClass1: TClass1; public property MyEnum: TMyEnum read GetMyEnum; // stellt den Wert aus FClass1 zur Verfügung end; ... //------------------------------------- unit Unit3; // "Benutzer"-Unit interface implementation uses Unit2; procedure Irgendwas; var Class2: TClass2; begin Class2 := TClass2.Create; Class2.MyEnum := meEins; // Hier möchte ich den Wert benutzen end; |
AW: Enum: Sichtbarkeit der Werte über mehrere Units "übersetzen"
Interessante Frage. Wie wäre es, wenn du alle einfachen Typendeklarationen extra in eine eigene Unit packst und sie überall dort einbindest, wo sie benötigt werden?
|
AW: Enum: Sichtbarkeit der Werte über mehrere Units "übersetzen"
Übersetzung?
Das ist eher eine Umleitung. :wink: Funktionieren tut das so:
Delphi-Quellcode:
Aber ich emfinde deinen Ansatz auch fehlgeleitet.
type
TMyEnum = Unit1.TMyEnum; const meEins = Unit1.meEins; meZwei = Unit1.meZwei; Sowas wird vorwiegend zur Abwertskompatibilität verwendet. Im Delphi-Quellcode wurde das an einigen Stellen gemacht, wenn etwas verschoben wurde, bzw. es doppelt deklariert war. (z.B. in den Units Types und Windows das TPoint und TRect) Es ist in etwa das selbe Prinzip wie dieses:
Delphi-Quellcode:
Wo ein Alias für diesen Typen und oder diese Konstanten erstellt wird.
type
TXyzEnum = {Unit1.}TMyEnum; const xeEins = {Unit1.}meEins; xeZwei = {Unit1.}meZwei; Das hier ist übrigens ein neuer Typ:
Delphi-Quellcode:
Delphi erstellt hier einen neuen/eigenen RTTI-Eintrag.
type
TAbcEnum = type {Unit1.}TMyEnum; Beim Anderen liefert die RTTI die TypInfo für TMyEnum, wenn man nach TXyzEnum fragt. Ich geb's aber zu. Hab dieses auch schon verwendet, damit die TNTs nicht direkt eingebunden werden müssen, bzw. damit man nicht doppelte Units (meine und die der TNTs) einbinden muß. ![]() Nur daß ich dort keinen Einfluß auf alle Units hatte, bzw. es nicht haben wollte. |
AW: Enum: Sichtbarkeit der Werte über mehrere Units "übersetzen"
Klingt ein bisschen sowie ein Gedicht schreiben wollen, aber keine Buchstaben verwenden:-D
|
AW: Enum: Sichtbarkeit der Werte über mehrere Units "übersetzen"
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz