AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?
Thema durchsuchen
Ansicht
Themen-Optionen

Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

Ein Thema von Sequitar · begonnen am 13. Mai 2019 · letzter Beitrag vom 14. Mai 2019
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 13. Mai 2019, 08:22
Wie wird der Klasse eine GUID zugeordnet? (per Property, Annotation, Funktion...?)

Hat im Codebeispiel nur die generische "Basis"-Klasse taclass eine GUID?
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.673 Beiträge
 
Delphi 12 Athens
 
#2

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 13. Mai 2019, 08:48
Wie wird der Klasse eine GUID zugeordnet? (per Property, Annotation, Funktion...?)
Es handelt sich bei GUID um eine Funktion des Typs TTypeData aus System.TypInfo.

Ich ging davon aus,die seien systemweit eindeutig und daher besser geeignet als irgendwelche selbst erstellten strings etc ?
Die Dokumentation dazu ist etwas sparsam, aber die Implementation lässt schließen, daß nur für Interface-Typen ein brauchbarer Wert dabei herauskommt. Da es sich bei TTypData um einen varianten Record handelt, wird der Speicher für die GUID bei anderen Typen für andere Dinge verwendet. Deswegen steht da wohl immer irgendwas drin, aber nur bei Interface-Typen ist das wirklich eine GUID.

Deinen Ansatz kannst du also getrost in die Tonne treten - nicht nur bei generischen Klassen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#3

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 13. Mai 2019, 09:29
Du kannst die Registrierung über die PTypeInfo direkt machen. Da brauchst du keine GUID oder irgendetwas, der Pointer darauf reicht schon zur eindeutigen Identifizierung im Dictionary.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 14. Mai 2019, 01:18
Du kannst die Registrierung über die PTypeInfo direkt machen. Da brauchst du keine GUID oder irgendetwas, der Pointer darauf reicht schon zur eindeutigen Identifizierung im Dictionary.
Hm das wäre ja schön einfach. Ich werde das morgen mal testen. Vielen Dank

NB :ich brauche halt eine eindeutige - und am besten bereits automatisierte - Identifizierung, ohne dass ich jetzt ZB irgendwelche hash Funktionen dazugeben muss

Hält das auch bei generics Stand? Müsste ja eigentlich denn tbla<x> ist ja ein anderer Typ als tbla<y> soweit ich weiß... Also auch andere typinfo

Geändert von Sequitar (14. Mai 2019 um 01:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#5

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 14. Mai 2019, 02:43
Hält das auch bei generics Stand? Müsste ja eigentlich denn tbla<x> ist ja ein anderer Typ als tbla<y> soweit ich weiß... Also auch andere typinfo
Ja, genau.

Das funktioniert nur bei den diversen Typaliasen der einfachen Typen nicht. Zum Beispiel ist TDateTime ja eigentlich nur ein Fließkommawert und hat daher auch dessen Typinfo.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Classen Typinfo GUID & Generics. Nicht eindeutig identifizierbar?

  Alt 14. Mai 2019, 01:28
Wie wird der Klasse eine GUID zugeordnet? (per Property, Annotation, Funktion...?)

Hat im Codebeispiel nur die generische "Basis"-Klasse taclass eine GUID?
Naja interfaces ordnet man ja gewöhnlich eine zu. Da ich bei PTypeInfo fündig geworden bin, nahm ich an dass klassen bereits eine von sich aus liefern würden.
Uwes Antwort dagegen schießt einen sinnvolle Verwendung jedoch aus, wenn das nur für Interfaces mit einer *echten * GUID hinterlegt ist
  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 18:02 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