Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi überkreuzender Bezug von Units .. kleiner Workaround (https://www.delphipraxis.net/100197-ueberkreuzender-bezug-von-units-kleiner-workaround.html)

mkinzler 26. Sep 2007 12:40

Re: überkreuzender Bezug von Units .. kleiner Workaround
 
Abstraktion ist auch ein Grundprinzip der OOP

Dezipaitor 26. Sep 2007 18:07

Re: überkreuzender Bezug von Units .. kleiner Workaround
 
ICh habe auch so ein "überkreuzender Bezug"-Problem:

Delphi-Quellcode:
unit Descriptor;
uses Token,...;

TSecurityDescriptor = Class(TObject)
...
{@Name combines a parent and a creator security descriptor into a new security descriptor.
For detailed information see MSDN [url]http://msdn2.microsoft.com/en-us/library/aa446581.aspx[/url]

@param(ObjectType A Pointer to a GUID that defines the type. Set to nil if it does not exist.)
@param(GenericMap Defines the generic map class which maps generic access rights to specific access rights.)
@param(Token defines the token instance which is used to check for access. Can be nil to use
process or thread token.)
}
constructor CreatePrivateObjectSecurity(
      const ParentSecurityDescriptor: TJwSecurityDescriptor;
      const CreatorSecurityDescriptor: TJwSecurityDescriptor;
      const ObjectType : PGUID;
      const IsDirectoryObject : Boolean;
      const AutoInheritFlags : Cardinal;
      const GenericMap : TJwSecurityGenericMappingClass;
      const Token : TSecurityToken = nil); //Fehler
...

end.

unit ...Token;
uses Descriptor,...;

TSecurityToken = Class(TObject)
...
{Sicherheitsdeskriptor für das Token}
property SecurityDescriptor : TSecurityDescriptor read GetSecurityDescriptor write SetSecurityDescriptor;
...
Im Moment verwende ich folgende Deklaration:
Delphi-Quellcode:
constructor CreatePrivateObjectSecurity(
      const ParentSecurityDescriptor: TJwSecurityDescriptor;
      const CreatorSecurityDescriptor: TJwSecurityDescriptor;
      const ObjectType : PGUID;
      const IsDirectoryObject : Boolean;
      const AutoInheritFlags : Cardinal;
      const GenericMap : TJwSecurityGenericMappingClass;
      const Token : TObject = nil); //Ok
Dabei wird Token auf den Typ überprüft :

Delphi-Quellcode:
if not (Token is TSecurityToken) then
  raise
Was könnte man da Vernünftiges machen?

stoxx 26. Sep 2007 18:39

Re: überkreuzender Bezug von Units .. kleiner Workaround
 
Zitat:

Was könnte man da Vernünftiges machen?
erstmal überprüfen, ob nicht ein Event ausreicht und ob Du wirklich eine Referenz von einem Object auf das andere Object benötigst.
Ein TButton kommuniziert ja auch nur über Events wie OnClick zum Formular zurück und nicht mit dem direkten Aufruf eines Formulars, auf dem es sich befindet..... Und deswegen lässt er sich ja so universell verwenden :-)
Deine Tokenklasse ist wahrscheinlich auch universell?

Ansonsten, das Prinzip mit der ClassHelper Lösung nicht verstanden? .. hmmm

Dezipaitor 26. Sep 2007 18:56

Re: überkreuzender Bezug von Units .. kleiner Workaround
 
Zitat:

Zitat von stoxx
Zitat:

Was könnte man da Vernünftiges machen?
erstmal überprüfen, ob nicht ein Event ausreicht und ob Du wirklich eine Referenz von einem Object auf das andere Object benötigst.
Ein TButton kommuniziert ja auch nur über Events wie OnClick zum Formular zurück und nicht mit dem direkten Aufruf eines Formulars, auf dem es sich befindet..... Und deswegen lässt er sich ja so universell verwenden :-)
Deine Tokenklasse ist wahrscheinlich auch universell?

Ansonsten, das Prinzip mit der ClassHelper Lösung nicht verstanden? .. hmmm

Das muss alles noch mit Delphi5 funktionieren. Sry. Habe ich vergessen zu erwähnen.
Und wie soll denn hier ein Event funktionieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Seite 3 von 3     123   

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