Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Properties überladen? (https://www.delphipraxis.net/90990-properties-ueberladen.html)

Tormentor32 27. Apr 2007 07:16


Properties überladen?
 
Guten Morgen!

Bin grad auf etwas gestoßen! Mal angenommen ich habe eine Listenklasse, die eine verkettete Liste Kapselt. Also

Delphi-Quellcode:
  TMyList = Class
  Private
    Root: TMyListenEintrag;
    GetEintrag(const Index: integer): TMyListenEintrag; overload;
    GetEintrag(const Name: string): TMyListenEintrag; overload;
    {...}
  public
  // Hier habe ich mir überlegt, man kann über den Index und über den Inhalt an einen Eintrag kommen, also zum beispiel über einen string
    property Items[Index: integer]: TMyListenEintrag read GetEintrag; overload;
    property Items[Name: string]: TMyListenEintrag read GetEintrag; overload;
  end;
Ist sowas möglich? Oder geht das nur über zwei überladene Funktionen machen, die mir den Eintrag zurückgeben.

Über den Sinn dieser Methode lässt sich streiten, es geht mir lediglich darum, ob sowas geht, und wenn ja, wie.

Schonmal vielen Dank!

Hawkeye219 27. Apr 2007 08:51

Re: Properties überladen?
 
Hallo Richard,

für die Default-Eigenschaft wird es von Delphi inzwischen direkt unterstützt:

Delphi-Quellcode:
type
  TMyList = Class
  Private
    Root: TMyListenEintrag;
    function GetEintrag (const Index: integer): TMyListenEintrag; overload;
    function GetEintrag (const Name: string): TMyListenEintrag; overload;
  public
    property Items [const Index: integer]: TMyListenEintrag read GetEintrag; default;
    property Items [const Name: string]: TMyListenEintrag read GetEintrag; default;
  end;
Wenn es sich nicht um die Default-Eigenschaft handelt, mußt du einen kleinen Umweg in Kauf nehmen.

Gruß Hawkeye

Tormentor32 27. Apr 2007 09:06

Re: Properties überladen?
 
Danke für die Antwort, das scheint genau das zu sein, nach dem ich gesucht habe!
Kanns im Moment leider nicht ausprobieren...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz