AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Auf Objekt in der TObjectList zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Objekt in der TObjectList zugreifen

Ein Thema von Luki206 · begonnen am 24. Nov 2014 · letzter Beitrag vom 26. Nov 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.760 Beiträge
 
Delphi 12 Athens
 
#1

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 15:53
Wozu? Meistens reicht es schon die property Items zu überschreiben:
Jupp.

Nur überdecken/verdecken, da es ja nicht überschreibbar (override) ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#2

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 15:56
Aber wenn ich nur Items anfasse, kann ich ja immer noch z.B. ein TEdit zur Liste hinzufügen. Das wird dann beim Items-Getter ganz böse knallen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.760 Beiträge
 
Delphi 12 Athens
 
#3

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 16:01
Jupp, aber wenn man böse castet, dann bekommt man auch in die generischen Liste ein TEdit rein. (das Gegenteil von hier -> nicht casten)
Aber man könnte ja auch noch die Add- und InsertMethoden überdecken.

Und wenn man eine Variable auf TObjectList hat, dann ist dort ebenfalls wieder das alte Item.
Es ist halt nur in dem Typen überdeckt, aber im Vorfahren natürlich nicht. (bei den Generics gibt es das Problem nicht, da der Typ nicht mit dem Vorfahren kompatibel ist )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Nov 2014 um 16:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#4

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 19:29
Schau Dir doch einfach #15 nochmal an und folge dem Link. Das ist doch fast alles schon gesagt worden
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.760 Beiträge
 
Delphi 12 Athens
 
#5

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 20:26
Es fehlt nur noch Eines.

Wenn man Notify "überschreibt" und dort eine Typprüfung einbaut, dann könnte man ganz leicht dafür sorgen, daß nur erlaubte Typen in die Liste aufgenommen werden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Auf Objekt in der TObjectList zugreifen

  Alt 25. Nov 2014, 23:33
Es gibt mindestens 4 Varianten:
1.) man verwendet TObjectList und muss beim auslesen der Objekte casten
2.) man verwendet eine generische ObjektList (natürlich nur wenn man eine Delphi Version hat die das unterstützt)
3.) man leitet von TObjectList ab und überdeckt das Items[]-Property
4.) man erstellt eine Klasse die intern ein privates Objekt vom Typ TObjectList hat und präsentiert nach Aussen nur die Properties und Methoden die man für die Aufgabenstellung unbedingt braucht:
Delphi-Quellcode:
TSomeItems = class(TObject)
private
    FList : TObjectList;
public
    constructor Create;
    destructor Destroy;override;
    procedure Add(item:TSomeItem);
    function AddNew:TSomeItem;
    property Items[Index: integer]: TSomeItem read GetSomeItem; default;
    property Count:Integer read GetCount;
end;
Das bedeutet natürlich die meiste Schreibarbeit und den geringsten Grad an Wiederverwendbarkeit;
im Gegenzug kann man die Klasse auf seine Anforderungen genau zuschneiden und hat die beste Kontrolle darüber was in die Liste eingefügt oder aus der Liste gelöscht werden kann.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.760 Beiträge
 
Delphi 12 Athens
 
#7

AW: Auf Objekt in der TObjectList zugreifen

  Alt 26. Nov 2014, 09:36
3a) wie in 3 genannt

3b) mit überschreiben verdecken von Add und Insert, mit dem gewollten Typen

3c) mit überschreiben von Notify und am Besten auch Add/Insert


Bei 3c bekommt man zwar erst Meldung nach der Aktion.
Entweder man wirft nur eine Exception und lässt das so,
oder bei Add wird das ungültige gleich wieder entfernt und danach die Exception, bzw. beim Löschen wieder eintragen und Exception.
Ein Therapeut entspricht 1024 Gigapeut.
  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 11:03 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