AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Interface referenzen auf gleichheit prüfen?
Thema durchsuchen
Ansicht
Themen-Optionen

Interface referenzen auf gleichheit prüfen?

Ein Thema von maximov · begonnen am 11. Okt 2004 · letzter Beitrag vom 14. Okt 2004
 
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#17

Re: Interface referenzen auf gleichheit prüfen?

  Alt 13. Okt 2004, 12:48
Hallo Maximov,

wenn ich den Ursprung Deines Problems, das Verwenden einer Interfacereferenz als Schlüssel in einem Assoziativen Array (Dictionary) zu verwenden, richtig verstehe, könntest Du aus Performancegrunden die dafür gängige Variante des Bei Google suchenhashing verwenden.
Weil Du zu diesem Zweck einen Hashwert aus einem eineindeutigen Schlüssel (hier: unter Zuhilfenahme der Interfacereferenz), bilden, Du die Schlüssel letztlich vergleichen musst und in Deinem Dictionary letztlich nur solche Schlüssel zugelassen werden können, die diese Eigenschaft aufweisen, bietet sich Hagens Ansatz, ein zusätzliches Interface einzuführen, geradezu an!

Weil Schlüssel jedoch prinzipiell nicht unbedingt "gehasht" werden können müssen, könnte man die Interfaces für Dictionary und Hashtables selbst wieder voneinander erben lassen, etwa in der Art

Delphi-Quellcode:
type
  IIdentifiable = interface
    function GetIdentity: Cardinal;
    function IsSameTo(const AnIdentifiable: IIdentifiable): Boolean;
  end;
  
  IHashable = interface(IIdentifiable)
    function GetHashValue: Cardinal;
    function IsSameHashValueAs(const AHashable: IHashable): Boolean;
  end;
Ich hoffe, die ADTs
Delphi-Quellcode:
type
  TDictionary = class
     procedure Add(const AKey: IIdentifiable; const AnObject: TObject);
     procedure Remove(const AKey: IIdentifiable);
     function Has(const AKey: IIdentifiable): Boolean;
     function Get(const AKey: IIdentifiable): TObject;
     //..
  end;

  THashtable = class
     procedure Add(const AnObject: IHashable);
     procedure Remove(const AnObject: IHashable);
     function Has(const AnObject: IHashable): Boolean;
     //..
  end;
veranschaulichen, was ich meine.
gruß, choose
  Mit Zitat antworten Zitat
 


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 15:05 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