Autor Beitrag
void
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 19.02.05 15:49 
hallo zusammen.
ich bin relativ neu bei Delphi, wir machen das nur von der Schule aus und unserer Lehrer hat dummerweise weniger Ahnung, als die meisten seiner Schueler...
ich hoffe, hier eine Antwort auf meine Frage zu finden.

also, wie der Titel schon sagt, wollte ich fragen, ob es in Delphi sowas wie Indexer gibt (vgl. zb. C#). man kann ja zum Beispiel auf die einzelnen Chars eines Strings mit den eckigen Klammern zugreifen...
kann man sowas auch selbst programmieren? irgendwie einer Property ein Attribute geben 'sei-der-Indexer-dieser-Klasse' oder so?

vielen Dank im Voraus fuer jede Antwort.
_void


Moderiert von user profile iconChristian S.: Topic aus Sonstiges verschoben am Sa 19.02.2005 um 15:50
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 19.02.05 15:57 
Hallo!

Ja, das geht auch in Delphi:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
type TmyClass = class(TObject)
  private
    FmyItems : Array of Integer;
    function getMyItem(index : Integer);
    procedure setMyItem(index: Integer; const value : Integer);
  public
    property myItem[index : Integer] : Integer read getMyItem write setMyItems; default;
  end;

{...}

function TmyClass.getMyItem(index : Integer);
begin
  result := FmyItems[index];
end;

procedure TmyClass.setMyItem(index : Integer; const value : Integer);
begin
  FmyItems[index] := value;
end;


Das "default" sorgt dafür, dass Du nicht per myClass.myItem[i] zugreifen musst, sondern diese Property als Standardproperty gesetzt wird und einfach mittels myClass[i] zugreifen kannst.

In den Gettern und Settern müssten natürlich ein paar Prüfungen und so folgen.

MfG
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Sa 19.02.05 16:01 
Solange der Index ein Ordinal-Typ ist reicht auch ein normales Array, der Vorteil bei einer Klasse wie Christian sie gepostet hat ist, dass der Index im Prinzip jeder Variablentyp sein kann, du musst ihn nur in den Get-/Set-Methoden entsprechend verarbeiten...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 19.02.05 16:11 
Motzi hat folgendes geschrieben:
Solange der Index ein Ordinal-Typ ist reicht auch ein normales Array,
Das ist dann aber kein Indexer im Sinne von C# mehr ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
void Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 24.02.05 20:05 
Titel: indexer
danke, ihr beiden!