AGB  ·  Datenschutz  ·  Impressum  







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

Eine Art Reflection

Ein Thema von christo · begonnen am 23. Feb 2007 · letzter Beitrag vom 23. Feb 2007
Antwort Antwort
christo

Registriert seit: 7. Nov 2003
3 Beiträge
 
#1

Eine Art Reflection

  Alt 23. Feb 2007, 08:47
Guten Morgen,

ich zerbreche mir gerade den Kopf ob folgendes moeglich waere:

Ich habe ein Objekt, was wiederum eine Liste beinhaltet, die wiederum eine Basisklasse fuer weitere Objekte enthaelt. Nun moechte ich ueber Items auf die Objekt zugreifen und am liebsten waere mir folgende Syntax:

MyObject.MyList("Objectname").Eigenschaft

Das waere sehr komfortabel. Bisher habe ich aber nur folgendes:

TObjectName(MyObject.MyList.Items[i]).Eigenschaft

...also eine "unschoenen" cast. Hat da vielleicht jemand eine Idee?

Chris
  Mit Zitat antworten Zitat
lowpass

Registriert seit: 19. Feb 2007
9 Beiträge
 
#2

Re: Eine Art Reflection

  Alt 23. Feb 2007, 09:20
Hallo Christo
Zwar bin ich Delphi-Neueinsteiger, aber vielleicht ist meine Idee trotzdem nicht völlig bescheuert:

Wie wäre es, wenn Du in der Klasse von MyObject eine Methode definierst, die einen String annimmt und ein Objekt vom Typ der Listenelemente zurückgibt?
Also im Sinne von:

MyObject.getObjectFromList('Objektname').Eigenschaft Und innerhalb von MyObject eine Funktion:
Delphi-Quellcode:
function TMyObject.getObjectFromList(Objektname: String): TListObject;
begin
    // in Liste nach dem Objekt mit entsprechendem Namen suchen
    // Gefundenes Objekt casten und zurückgeben
end;
Dann müsstest Du zwar 1 mal die Methode ausprogrammieren, wie man anhand des Objektnamens das passende Objekt aus der Liste holt, könntest aber im restlichen Code so zugreifen, wie Du das gerne möchtest.
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Eine Art Reflection

  Alt 23. Feb 2007, 10:56
Das kannst du vll über eine property lössen

Delphi-Quellcode:

  TMyObj = class
  private

  MyList : TMyList;

  puplic

  property Items[Name : String] : TMyListObj read getItem write setItem;

  end;
Musst halt nur die Getter und setter methoden bebringen wie sie nach dem Objectnamen suchen können, und das gefunde dann rausgeben
Thorben
  Mit Zitat antworten Zitat
christo

Registriert seit: 7. Nov 2003
3 Beiträge
 
#4

Re: Eine Art Reflection

  Alt 23. Feb 2007, 15:02
Hallo Zusammen,
vielen Dank fuer die Unterstuetzung. Allerdings komme ich mit den Hinweisen noch nicht weiter. Vielleicht nochmal mein Konstrukt...

Delphi-Quellcode:
TMyObjectBase = class(TObject)
public
  property Name: string;
end;

TMyObjectOne = class(TMyObjectBase)
public
  property Color: string;
end;

TMyObjectTwo = class(TMyObjectBase)
public
  property Position: string;
end;

TMyList
public
  property Items[Index: integer] : TMyObjectBase; read GetItems write SetItems;
end;

...
for i := 0 to MyList.Count -1 do
//cast
  TMyObcetTwo(MyList.Items[i])Positon

//besser???
  MyList('ObjectTwo').Position
Ich denke der Haken ist der Count der Liste. Muesste vielleicht eher ueber for each in funktionieren, aber das kennt Delphi ja so nicht?

Gruss,
Chris
  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 05:53 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