Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Records, Pointer, Listen & Co. (https://www.delphipraxis.net/77615-records-pointer-listen-co.html)

Elvis 22. Sep 2006 13:34

Re: Records, Pointer, Listen & Co.
 
@Oki, was nicht geht, geht nunmal nicht.
Man muss also auch nicht prüfen ob wirklich das drin ist, was drin sein sollte.

Ok, jetzt könnte jemand einwenden, dass Delphi32 nicht wirklich type safe ist, und jemand einen Hardcast seiner Lunchbox auf TSomeType machen könnte.Aber irgendwo muss man verhältnismäßig bleiben, IMHO...

Ich selbst gehe aus genau diesem Grund auch lieber den Weg des Dekorierens. :)

r2c2 22. Sep 2006 14:34

Re: Records, Pointer, Listen & Co.
 
ggf. kann hier das TObjectList TemplateTObjectList Template viel Arbeit ersparen...

mfg

Christian

oki 22. Sep 2006 15:46

Re: Records, Pointer, Listen & Co.
 
Hi,

@Elvis:
Zitat:

Zitat von Elvis
@Oki, was nicht geht, geht nunmal nicht.

Gehn tuts. Das ist nicht die Frage. (oder ich habe hier was falsch verstanden)
Ob das der gute weg mit dem Überschreiben ist, das fragt sich. Dann frage ich auch mal so:

Warum wird in TObjectList die Methode Add aus TList statisch überschrieben?

Also ich war das nicht!!! :angel:

Unabhängig davon ist der Tip mit den Templates beeindruckend. Da hör ich mal auf zu antworten und zieh mir das über's Wochenende mal rein. Dank r2c2!

Gruß oki

Evian 22. Sep 2006 19:21

Re: Records, Pointer, Listen & Co.
 
öhm die frage ist jetzt vielleicht 'n bisschen doof, aber zum Glück darf man hier ja auch "doofe Fragen" stellen. :-D

und zwar wäre meine Frage zu:

Zitat:

Zitat von oki
Ich persönich habe aber fest gestellt, dass man immer wieder zusätzliche Methoden für den Zugriff auf die einzelnen Elemente in der Liste benötigt.

Muss ich jetzt für den Zugriff auf die Werte der TMyData-Objekte immer eine eigene Zugriffsfunktion implementieren, oder kann ich mir nicht auch einfach die einzelnen Objekte komplett aus der Liste holen und dann direkt auf die Werte zugreifen?! Also ich meine sowas wie:

Delphi-Quellcode:

VAR
tempMyData : TMyData;
...

tempMyData := DataList.Items[Index];
x := tempMyData.FParam1
y := tempMyData.FParam2
...

Elvis 22. Sep 2006 19:26

Re: Records, Pointer, Listen & Co.
 
Zitat:

Zitat von oki
@Elvis:
Zitat:

Zitat von Elvis
@Oki, was nicht geht, geht nunmal nicht.

Gehn tuts. Das ist nicht die Frage. (oder ich habe hier was falsch verstanden)

Sorry, war blöd formuliert. Ich meinte, dass man bei einer dekorierten OvjectList schlecht etwas anderes reinwerfen kann als das was in der einzigen Add Methode steht. ;)

oki 23. Sep 2006 11:41

Re: Records, Pointer, Listen & Co.
 
Zitat:

Zitat von Elvis
Ich meinte, dass man bei einer dekorierten OvjectList schlecht etwas anderes reinwerfen kann als das was in der einzigen Add Methode steht. ;)

Ja, und genau das will ich eigentlich auch damit erreichen. Bei mir soll da normaler weise auch nichts anderes rein.


Zitat:

Zitat von Evian
Muss ich jetzt für den Zugriff auf die Werte der TMyData-Objekte immer eine eigene Zugriffsfunktion implementieren, oder kann ich mir nicht auch einfach die einzelnen Objekte komplett aus der Liste holen und dann direkt auf die Werte zugreifen?!

Klar, du mußt hier nicht mit Gewalt Methoden implementieren die du nicht haben willst. Normalerweise ist es jedoch so, dass man in so einer Objekt-Liste Sachen ablegt, auf die man auch öfter mal zugreift.
In deinem letzten Beispiel ist die Einsparung nun gerade nicht erheblich, aber auch da. Mit einer direkten Zuweisung in der Form:
Delphi-Quellcode:
  X := MyDataList.GetXfromIndex(Index);
  Y := MyDataList.GetYfromIndex(Index);
wobei die
Delphi-Quellcode:
Funktion GetXfromIndex(Index : Integer);
alle notwendigen Arbeiten für dich in der klasse übernimmt. die können sein:
- Holen des Data-Objectes bei Index,
- prüfen der Instanz,
- Ermitteln des Wertes für x oder y,
- Gültigkeitsprüfung für x oder y.

Das ist dann schon wieder ne ganze Menge. Hast du diese Zugriffe an mehreren Stellen deines Programms, so hilft das schon ein stück weiter. Zudem hast du es in deinem Object einmal richtig gut durchdacht und dementsprechend geproggt und mußt dir diese Gedanken nicht jedes mal wieder von neuem machen.
das macht man sicher nicht für alle Zugriffe auf die Liste, aber sicher für die gebräuchlichsten.

Gut, wie du es machst bleibt dir überlassen. Wir geben dir hier nur Ideen und unsere Ansichten. Dahinter steht kein Muß. Solange du dich mit einem Weg nicht anfreunden kannst ist es o.k.. Jeder muß auch seinen eigenen Stil finden.

gruß oki

Evian 23. Sep 2006 17:31

Re: Records, Pointer, Listen & Co.
 
Okey vielen Dank noch mal.

Da ich in der Schule ausschließlich strukturierte Programmierung (ok ich nutze ja auch die Klassen und ihre MEthoden von Delphi, aber letztendlich auch eher strukturiert...) gelernt habe fällt es mir immer wieder schwer wirklich objektorientiert zu programmieren. Auf den ersten Blick erscheint mir der Aufwand immer höher bei OOP, aber das dieser erste Blick auch irgendwo trügerisch ist, sollte ich langsam lernen.. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.
Seite 2 von 2     12   

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