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
Antwort Antwort
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
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Frage zum Indexer - Verständnisprobleme

  Alt 13. Nov 2008, 22:47
Sollte doch gehen,

schau doch mal deine definition an
property Items[AIndex : Integer]: TODBCTable cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
tomsson74

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

Re: Frage zum Indexer - Verständnisprobleme

  Alt 13. Nov 2008, 23:03
Ja, der Rückgabewert ist ja auch ein TODBCTable-Objekt, wenn ich über "Items" gehe. Aber das ist ja nicht mein Problem.

Die Definition

property Items[AIndex : Integer]: TODBCTable sagt doch aus, dass ich

TODBCTableList.Items[Index] schreiben muss, um als Rückgabewert ein TODBCTable-Objekt zu erhalten.

Ich würde aber gerne

TODBCTableList[Index] schreiben.

Das funkioniert aber nur mit Typecast, also so:

TODBCTable(TODBCTableList[Index]) /Thomas
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: Frage zum Indexer - Verständnisprobleme

  Alt 13. Nov 2008, 23:32
Zitat:
Ich würde aber gerne

Delphi-Quellcode: markieren
TODBCTableList[Index]


schreiben.
Einfach default der Eigenschaftsdefinition anhängen:

property Items[AIndex : Integer]: TODBCTable read GetItem write SetItem; default;
  Mit Zitat antworten Zitat
tomsson74

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

Re: Frage zum Indexer - Verständnisprobleme

  Alt 14. Nov 2008, 06:45
Mensch, da tippe ich soviel Text und die Antwort ist dann ein Einzeiler

Danke, so klappt es wunderbar - wieder mal was dazu gelernt.

Damit ist die Frage beantwortet.


/Thomas
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: Frage zum Indexer - Verständnisprobleme

  Alt 14. Nov 2008, 13:18
Zitat von tomsson74:

Danke, so klappt es wunderbar - wieder mal was dazu gelernt.
Gerne
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:01 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