AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Generics: Instanz-Erzeugung in generischer Klasse
Thema durchsuchen
Ansicht
Themen-Optionen

Generics: Instanz-Erzeugung in generischer Klasse

Offene Frage von "hokuspokussimsalabim"
Ein Thema von Sir Rufo · begonnen am 9. Okt 2011 · letzter Beitrag vom 10. Okt 2011
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Generics: Instanz-Erzeugung in generischer Klasse

  Alt 10. Okt 2011, 01:09
Jo, merci erst mal ... obschon das alles nicht zum Ziel geführt hat ... mich dünkt wohl auch warum ...

Hmm, ich hätte auch gedacht, dass T in dem Fall TButton entspricht und entsprechend T.Create(nil) möglich sein müsste.
Ist das dann als Bug bzw. fehlendes Feature anzusehen oder geht das Problem vom Konzept her völlig in Ordnung?
Ich denke mal nicht, denn in der generischen Klasse ist TButton nicht bekannt sondern nur abstrakt als T (irgendwas ab TComponent).
Nachfahren von TComponent können aber auch den Constructor überschreiben:
Delphi-Quellcode:
TMyComponent = class(TComponent)
public
  constructor Create; reintroduce;
end;
und schon gibt es für diese Ableitung kein Create(AOwner:TComponent) mehr.

Womöglich ist das so nicht anders machbar, aber da ich auch keine Lust habe für jedwede Ableitung von TComponent ein Interface zu implementieren, behelfe ich mir nun so, dass ich einfach eine Dummy-Instanz beim Erzeugen mitgebe.
(Diese Dummy-Instanz wird dann am Schluss von selbiger einfach ins Nirwana geschickt)
Delphi-Quellcode:
var
  MyButton : IGenericLink<TButton>;
begin
  MyButton := TGenericLink<TButton>.Create( TButton.Create( nil ) );
  MyButton.Link.OnClick := ButtonClick; // jetzt rummst auch nix mehr ... logisch
end;
Nicht schön, aber funktioniert
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
 


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 14:17 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