AGB  ·  Datenschutz  ·  Impressum  







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

TList<>.OnBefore?

Ein Thema von himitsu · begonnen am 23. Jan 2016 · letzter Beitrag vom 26. Jan 2016
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von himitsu
himitsu

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

TList<>.OnBefore?

  Alt 23. Jan 2016, 13:17
Moin,

warum kann man bei diesen komischen Listen nicht vorher prüfen, ob etwas da rein/raus darf?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: TList<>.OnBefore?

  Alt 23. Jan 2016, 19:57
Hä? Programmier es doch einfach. Nennt sich Wrapper. Aber Du kannst so einem Ding auch einen anderen Namen geben.
  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
 
#3

AW: TList<>.OnBefore?

  Alt 23. Jan 2016, 21:27
Sehe ich auch so. So eine Liste ist wie ein Eimer. Der soll robust sein und zuverlässig funktionieren.

Wenn ich statt dem Eimer eine selektive Reuse brauche dann baue ich mir das aus dem Eimer (Composition)
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
Benutzerbild von himitsu
himitsu

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

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 09:34
In den ersten TList<T> ginge das mit dem Selbermachen noch (halbwegs), aber ich hab jetzt den Code von XE8 gesehn und muß sagen "vergesst" es, denn jede Prozedur einzelne Prozedur zum Hinzufügen, Löschen oder Entfernen separat auf eine eigene TListHelper-Prozedur geht und die wiederzum alle weder in TList noch im Helper überschreibbar (virtual) sind.

Auch werden alle Events und virtuellen Methoden erst nach den Operationen aufgerufen, wo es dann schon zu spät ist.

Es gibt einfach keine Orte, wo man sich vorher rein hängen kann, um z.B. eine "nee, das darfst du nicht"-Exception auszulösen.
Ich kann also nur hinterher ein "das hättest du jetzt tun sollen" werfen.



Gut, man könnte jetzt in der TList nocheine TList/Array ablegen, welches nach den Operationen eine Kopie macht, über die ich es dann wieder rückgangig machen kann, aber das ist absolut keine Lösung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Jan 2016 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 09:58
"Komposition statt Vererbung" war eins der ersten Dinge die mir eingetrichtert wurden

Ich glaube Vererbung passt hier echt nicht.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 10:19
Einfach ausgedrückt: Du schreibst Dir deinen Container, indem Du *nicht* von TList ableitest, sondern (heute) intern eine TList verwendest. Das macht deinen Container flexibler, weil so eine TList ist ja nun auch nicht das Gelbe vom Ei. Morgen gibt es vielleicht eine "TSuperDuperList" und dann änderst Du die Implementierung deines Containers und keine Sau merkt, das Du die TSuperDuperList mit der neuen TRaumZeitFalte verwendest, wodurch die Elemente schon gefunden werden, *bevor* überhaupt danach gesucht wurde.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 10:21
Wäre halt zu einfach, wenn jemand an die Before-Events gedacht hätte.

Jetzt ist das so, daß man praktisch jede Methode (und die TList<> hat seeeeehhhhrrr Viele davon) überschrieben überdeckt werden müsste.
Und es kommen ständig neue Methoden dazu, die dann deine Überladungen umgehen.

Fazit: Man kann das vergessen und müsste eigentlich selber eine eigene TList schreiben, wo Emba nicht drin rumpfuschen kann. [edit] oder der Container
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 10:46
Ich muss Himitsu zustimmen. Eine OnBefore-Funktion ist m.E. mit Funktionen wie Sort gleichzusetzen und hat durchaus eine Berechtigung zur TList zu gehören. Grade bei der Generics-Version

Ansonsten bin ich wie Günther ein Fan von Komposition.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 12:38
TList ist keine Komponente, sondern eine Klasse. Und so eine Klasse hat genau eine einzige Aufgabe: Implementierung einer Liste.

Gute Software zeichnet sich übrigens nicht dadurch aus, das man -wuppdiwupp- auf schnellstmöglichste Weise irgend ein Ding umsetzt, sondern eher dadurch, das das, was man umsetzt, nachhaltig ist, d.h. leicht zu verstehen, zu warten und zu erweitern ist.

Deine SW wäre mit TListen übersäht, wobei das OnBefore... ständig umgebogen würde. Hmmm....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 12:58
Wozu soll man erst einen Wrapper bauen, wo doch das OnBefore die einzige wichtige Funktion ist, die man wirklich in der Liste gebrauchen kann?
Soll ich jetzt dutzende Methoden verpacken und jeweils mit der Check-Methode davor zur Liste umleiten, anstatt nur eine Stelle in der Liste zu haben?

Gerade die generische TList<> hat rein garnichts mehr mit der alten TList zu zun.
Alleine das Interface der TList<> ist knapp 400 Zeilen lang, mit unmassen an Methoden, die man fast alle Wrappen müsste, wenn man dem Endnutzer meiner Komponente auch alle Möglichkeiten offen lassen will. (TList als Child-Liste in einer Komponente, also für einen schönen Baum an Komponenten)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:51 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