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 Generische Ableitung TList<> (https://www.delphipraxis.net/121963-generische-ableitung-tlist.html)

sniper_w 9. Okt 2008 08:18

Re: Generische Ableitung TList<>
 
Zitat:

Es ist schon ein wenig schade, dass Delphi mit dem Wissen, dass T eine Klasse sein muss, nicht erschliessen kann, dass nil und default(T) das selbe meinen müssen
Hoffen wir, dass das eine Absicht ist, die eine gute Erklärung für sich hat

Daniel 9. Okt 2008 08:32

Re: Generische Ableitung TList<>
 
Default ist halt die allgemeine Lösung, die Du auch dann nutzen kannst, wenn keine Constriants da sind und es sich bei dem Datentyp um eine Klasse, einen String oder einen Integer handeln könnte.

stoxx 19. Nov 2014 08:08

AW: Re: Generische Ableitung TList<>
 
Da FindByID sowieso zur Klasse TMyBase gehört und FindByID ausschließlich eine Lösung für TMyBase darstellt und Generics an der Stelle nicht mehr benötigt werden, finde ich den Weg unnötig kompliziert.
So fände ich es "logischer"


Delphi-Quellcode:
type
  TMyListSpecific = TList<TMyBase>;

  TMyList = class(TMyListSpecific)
  public
    constructor create;
    destructor destroy; override;
    function FindByID(ID : string) : TMyBase;
  end;


function TMyList.FindByID(ID: string): TMyBase;
var
  c: integer;
begin
  result := nil;
  for c := 0 to Count - 1 do
    if Items[c].ID = ID then
      result := Items[c];
end;

DeddyH 19. Nov 2014 08:20

AW: Generische Ableitung TList<>
 
Ein break oder exit bei Fund würde die Sache ggf. noch beschleunigen, falls das nach 6 Jahren überhaupt noch interessiert.

stoxx 19. Nov 2014 08:41

AW: Generische Ableitung TList<>
 
Es ging mir nur um die Vollständigkeit, dass solche Quelltextbeispiele nicht im Raum stehen gelassen werden ;-)
Meiner Meinung nach schoss die ursprüngliche Lösung am Ziel vorbei.

himitsu 19. Nov 2014 09:06

AW: Generische Ableitung TList<>
 
Joar, falls mal jemand auf die irrwitzige Idee kommt und die SuFu benutzt. :stupid:

Alternative Lösung: Eine andere Art von Liste verwenden.

TListObject<T> = Warum wurde hier TList<> verwendet, wo darin doch Objekte abgelegt werden? Und wer kümmert sich eigentlich um deren Freigabe?
TCollection<T> = Gibt es leider nicht, aber als TCollection würde die Liste sich nicht nur um die Speicherreservierung/Objekterstellung kümmern und nicht nur um die Freigabe, also die komplette Verwaltung.
TDictionary<TKey,TValue> / TObjectDictionary<TKey,TValue> = Da man hier ja vorallem eine Fuchfunktion haben will ... Wie wäre es dann damit? :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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