![]() |
Frage zu einer Programmier-Technik, die ich nicht kenne
Jo, ich gebe es zum ich bin einer derjenigen, der viel zu tun hat auf Arbeit und manchmal es nicht schafft, auf dem Laufenden zu bleiben.
Ich habe mir letztens mal ein Video zum TFrameStand angesehen und kam an eine Stelle, wo ich nicht genau wusste, was er dort machte und da ich auch nicht weiss, wie diese Technik heisst, ist es schwer es nachzulesen. Die Codezeile aus einem der Demos ist diese :
Code:
Das mit dem TFrameStand.New<Classname>(Parameter)
FFrameInfo := FrameStand1.New<THelloWorldFrame>(Layout1, 'bluestand');
Wie heisst das und wo kann ich lernen, wie man es nutzt ? UNd vllt. seit wann gibt es das ? :) Danke!!! |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Generics D2009
|
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Nennt man Generics.
|
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Ich nutze Generics immer nur mal mit TDictionary.
Ok, suche ich mal ein Tutorial, Danke |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Generics fangen schon beim TArray<xyz> an und gehen über die anonymen Methoden hin zu noch viel mehr.
Delphi-Quellcode:
Wenn du Letzteres in zwei Units definiert hast, dann sind diese Typen kompatibel,
type
X = array of irgendwas; Y = TArray<irgendwas>; während bei X das zwei unterschiedliche Typen sind, wo man Variablen/Parameter nicht untereinander zuweisen kann. |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
das allein schon vestehe ich nicht :
Code:
:roll:TFrameInfo<T: TFrame> = class |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Zitat:
grob zu erklären. TFrameInfo ist eine Klasse mit einem variablen Teil T, der ein TFrame oder von TFrame abgleitet Klasse sein muß. :) Am einfachsten, denk ich, lassen sich Generics anhand von Listen erklären. Früher (Vor den Generics) musste man für jeden Datentyp eine eigene Ableitung einer TList-Klasse bauen, obwohl die ganze Verwaltung und Funktionalität die gleiche war. Mit Generics kannst du einfach eine TList des benötigen Datentypes definieren und gut. |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
"Generics" ist ein wenig hilfreicher Name. Besser wäre "parametrisierbarer Typ". Soll heißen, du bestimmst den Typ einer Definition durch einen Parameter.
Du definierst deine Klasse ganz allgemein: TList<T> und implementierst deine Methoden + wenn du den Typ im Code brauchst, benutzt du <T>. Brauchst du dann einen konkreten Typ, übergibst du den konkreten Typ: TList<integer>, TList<Float>, TList<String>, aber natürlich auch TList<TDataset> etc. Den Vorteil siehst du schon? Siehe auch: ![]() ![]() ![]() |
AW: Frage zu einer Programmier-Technik, die ich nicht kenne
Früher nannte man das Copy-Buffer Programmierung, aber generics klingt besser... :stupid:
Beispiel: Du hast einen Quicksort-Routine, die ein array aus Integer sortieren kann. Wenn Du jetzt Strings sortieren willst oder Records mit irgendwelchen Daten, kopierst Du die Quicksort-Routine und schreibst überall wo Integer steht String oder TMyRecord... Mitte : Integer => Mitte : String; Jetzt kommen die Generics ins Spielt: Hier steht dann Mitte : T wobei es nicht T heißen muss. T ist hier nur ein Platzhalten. Es könnte auch Mitte : TKopierterTyp heißen - ist das gleiche... Class<TKopierterTyp> Bei mehrerer Parametern, sieht man das schon mal : TConverter<TSource,TDest> = Class Was wan man früher mit Copy-Buffer gemacht hat - also die Routine komplett kopiert und den Typen geändert. Macht heute der Compile mit Compiler-Magic... Somit kannst Du allgemeine Routinen schreiben die dann "beliebige" Typen verwenden können. Damit der Compiler auf gewisse Typenbezogene Methoden zugreifen kann, kann man <T:TFrame> eingrenzen. T muss dann mindestens vom Type TFrame beziehungsweise eine Ableitung von TFrame sein... Mavarik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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