AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zum Indexer - Verständnisprobleme

Ein Thema von tomsson74 · begonnen am 13. Nov 2008 · letzter Beitrag vom 14. Nov 2008
 
tomsson74

Registriert seit: 8. Jan 2008
73 Beiträge
 
Turbo Delphi für Win32
 
#1

Frage zum Indexer - Verständnisprobleme

  Alt 13. Nov 2008, 22:44
Frage zum Indexer - Verständnisprobleme

Hallo zusammen

in einer TObjectList speichere ich besitmmte Objekte. Damit ich nicht beim Zugriff auf diese Liste nicht jedes mal ein Typecast machen muss, habe ich die Setter- und Getter-Methode so überlagert, dass sie direkt das richtige Objekt liefert.

Delphi-Quellcode:
   TODBCTableList = class(TObjectList)
   private
     function GetItem(AIndex: Integer): TODBCTable;
     procedure SetItem(AIndex: Integer; AValue: TODBCTable);
   public
     property Items[AIndex : Integer]: TODBCTable read GetItem write SetItem;
   end;

(...)

   function TODBCTableList.GetItem(AIndex: Integer): TODBCTable;
   begin
     Result := TODBCTable(inherited Items[AIndex]);
   end;

   procedure TODBCTableList.SetItem(AIndex: Integer; AValue: TODBCTable);
   begin
     inherited Items[AIndex] := AValue;
   end;
Jetzt kann ich mit einer for schleife auf die Objekte zugreifen (angenommen, meine Klasse hätte die Variablen "Name" und "Bezeichnung"):

Delphi-Quellcode:
Tables := TODBCTableList.Create;

(...) // "Tables" füllen

for I := 0 to Tables.Count - 1 do begin
   Memo1.Lines.Add(Tables.Items[I].Name);
   Memo1.Lines.Add(Tables.Items[I].Bezeichnung);
end;
Und jetzt kommt meine Frage. Eher zufällig bin ich drauf gekommen, dass man statt

Tables.Items[I].Name auch

TODBCTable(Tables[I]).Name schreiben kann, also ohne den "Umweg" über "Items" nehmen zu müssen.
Warum geht das ? Das sieht aus wie eine art namenloser Indexer. Ich habe mir die Klasse TObjectList als auch TList (von der TObjectList abgeleitet wurde) angeschaut und natürlich nichts derartiges gefunden.

Aber wenn es schon so funktioniert, kann ich dann dafür auch "meinen" Objekt-Typ als Rückgabewert erzwingen, damit ich auch die gekürzte Schreibweise ohne Typecast nutzen kann ?

Tables[I].Name
  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 17:26 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