AGB  ·  Datenschutz  ·  Impressum  







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

Funktion als Generic - wie?

Ein Thema von exasoft · begonnen am 22. Jan 2019 · letzter Beitrag vom 23. Jan 2019
 
Der schöne Günther

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

AW: Funktion als Generic - wie?

  Alt 22. Jan 2019, 17:24
Generics sind erst einmal völlig generisch - Da kann alles rein. Und nicht alles hat .Parent .

Deshalb müssen wir hingehen und sagen: "Ok, alles jetzt nicht, aber bitte alles was ein TControl ist."

Einschränkungen für Generics formuliert man mit einem Doppelpunkt, z.B. so: function TForm1.getY<T: TControl>(Sender: TObject; AMaster: TLayout): single; Von da an kannst du in deiner Methode auf alles zugreifen was ein TControl hat. Und wenn du die Methode aufrufst kann der Compiler sicherstellen dass du auch ein TControl reinstecken musst, sonst macht das alles wenig Sinn. Es sähe dann also eher so aus:
function TForm1.getY<T: TControl>(Sender: T; AMaster: TLayout): single;

Lesestoff: http://docwiki.embarcadero.com/RADSt...isierte_Typen)

Ganz verstanden was du wirklich willst habe ich allerdings nicht. Leute neigen oft dazu Generics als eine Lösung für alles mögliche anzusehen, obwohl Generics hier überhaupt nichts helfen.

Auf einem Formular kann man sich wahnsinnig tolle Hilfsfunktionen bauen wie z.B. "Gib mir alles auf dem Formular was ein T ist" und ich kann für T einfach TEdit einsetzen und bekomme als Rückgabe ein Array mit allen Edit-Felder auf dem Formular. Oder alle Buttons. Oder was auch immer.
  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 18:52 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