AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Frage zu einer Programmier-Technik, die ich nicht kenne
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu einer Programmier-Technik, die ich nicht kenne

Ein Thema von MyRealName · begonnen am 18. Apr 2018 · letzter Beitrag vom 19. Apr 2018
Antwort Antwort
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#1

Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 16:46
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:
FFrameInfo := FrameStand1.New<THelloWorldFrame>(Layout1, 'bluestand');
Das mit dem TFrameStand.New<Classname>(Parameter)

Wie heisst das und wo kann ich lernen, wie man es nutzt ? UNd vllt. seit wann gibt es das ?

Danke!!!

Geändert von MyRealName (18. Apr 2018 um 16:47 Uhr) Grund: Tippfehler :D
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 16:47
Generics D2009

Geändert von freimatz (18. Apr 2018 um 16:52 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 16:47
Nennt man Generics.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 16:49
Ich nutze Generics immer nur mal mit TDictionary.
Ok, suche ich mal ein Tutorial,
Danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#5

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 18:05
Generics fangen schon beim TArray<xyz> an und gehen über die anonymen Methoden hin zu noch viel mehr.

Delphi-Quellcode:
type
  X = array of irgendwas;
  Y = TArray<irgendwas>;
Wenn du Letzteres in zwei Units definiert hast, dann sind diese Typen kompatibel,
während bei X das zwei unterschiedliche Typen sind, wo man Variablen/Parameter nicht untereinander zuweisen kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 18. Apr 2018, 19:38
das allein schon vestehe ich nicht :

Code:
 
 TFrameInfo<T: TFrame> = class
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 19. Apr 2018, 06:54
das allein schon vestehe ich nicht :

Code:
 
 TFrameInfo<T: TFrame> = class
Ich steh zwar auch noch am Anfang, was man mit Generics alles machen kann, aber hier mal ein Versuch das
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.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 19. Apr 2018, 07:58
"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:
https://de.wikipedia.org/wiki/Generischer_Typ
http://docwiki.embarcadero.com/RADSt...n_von_Generics
https://www.thoughtco.com/understand...delphi-1058229
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Frage zu einer Programmier-Technik, die ich nicht kenne

  Alt 19. Apr 2018, 09:30
Früher nannte man das Copy-Buffer Programmierung, aber generics klingt besser...

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
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:01 Uhr.
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