![]() |
Zur Sichtbarkeit von TYPEN
Hallo,
ich habe immer wieder folgende Unsauberkeit, die ich verbessern möchte: In einer Unit habe ich: ------------------------------
Delphi-Quellcode:
------------------------------
INTERFACE
TYPE t_xy =.... t_sichtbare_Klasse = CLASS .... PRIVATE xy:t_xy; END; IMPLEMENTATION ... Der TYPE t_xy ist nach außen sichtbar, obwohl er eigentlich nur lokal gebraucht wird. Das ist gelegentlich lästig, weil man ja z. B. in einer Unit "UPKW" mit der Klasse "t_PKW" sowie in einer UNIT "ULKW" mit einer Klasse "t_LKW" jeweils einen TYPE "t_Motoreigenschaften" hat, was dann bei gemeinsamer Nutzung ein Problem gibt. Hat da jemand eine Idee, wie man das richtig macht? Gruß Guenther [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: Zur Sichtbarkeit von TYPEN
Wenn der Typ im Interface nicht gebraucht wird, kannst du die Deklaration nach Implementation verschieben. Wenn er beispielsweise im private-Teil öffentlicher Klassen benötigt wird, kannst du zumindest in neueren Delphi-Versionen den Typen in der öffentlichen Klasse als private deklarieren.
|
Re: Zur Sichtbarkeit von TYPEN
Nicht im Interface, sondern unter Implementation deklarieren, dann ist er nur lokal sichtbar
|
Re: Zur Sichtbarkeit von TYPEN
Zitat:
|
Re: Zur Sichtbarkeit von TYPEN
ab mindestens TurboDelphi/Delphi2006 geht sowas
Delphi-Quellcode:
oder
t_sichtbare_Klasse = CLASS
.... PRIVATE TYPE t_xy =.... VAR xy:t_xy; END;
Delphi-Quellcode:
oder du definierst es in einer anderen Unit ... solange diese Unit nirgendwo anders eingebunden ist, ist es auch nirgends außerhalb sichtbar.
t_sichtbare_Klasse = CLASS
.... PRIVATE TYPE t_xy =.... PRIVATE xy:t_xy; END; PS: das geht alles übrigend auch mit Konstanten :angel: |
Re: Zur Sichtbarkeit von TYPEN
Du kannst auch ein "richtiges" Interface deklarieren:
Delphi-Quellcode:
Damit lassen sich alle Implementationsdetails komplett verbergen.
interface
IContact = Interface(IUnknown) function GetPhoneNo:WideString; ... end; function CreateNewContact:IContact; implementation type TContact = class(TComObject, IContact) function GetPhoneNo:WideString; end; |
DANKE:....
Viele hilfreiche Ideen, danke an alle, probiere ich alles aus!
Gruß Guenther |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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