AGB  ·  Datenschutz  ·  Impressum  







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

Variable mit bestimmbarem Datentyp?

Ein Thema von milos · begonnen am 22. Jul 2014 · letzter Beitrag vom 24. Jul 2014
Antwort Antwort
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 02:10
Oh cool, danke Das geht ja einfach ^^
Leider wusste ich nicht wie man das nennt, und somit hab ich bei der Google suche auch nicht wirklich was gefunden :/

Und das mit dem Erweiterten Editor wusst ich auch noch nicht

Aber vielen dank

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 02:42
Vererbung

Wie bei den anderen Klassen passt ein Nachfahre natürlich nur in Variablen vom selben Typ, oder von Vorfahren.
Und da die generischen Ableitungen quasi jeweils einen "eigenständigen" Typen erzeugen, sind sie untereinander natürlich nicht kompatibel, außer gegen einen der gemeinsamen Vorfahren.


XE6: Macht nichts.
Du könntest das zwar immernoch berichtigen, aber es gibt dort eh noch kein XE6.
Darfst aber gern den Bug-Report puschen: http://www.delphipraxis.net/issue-433/
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 06:45
Darf ich mal fragen, wozu man soetwas benötigt und warum ein Delphi-Referenz durchsuchenVariant hier nicht infrage kommt?
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 22:37
Vererbung

Wie bei den anderen Klassen passt ein Nachfahre natürlich nur in Variablen vom selben Typ, oder von Vorfahren.
Und da die generischen Ableitungen quasi jeweils einen "eigenständigen" Typen erzeugen, sind sie untereinander natürlich nicht kompatibel, außer gegen einen der gemeinsamen Vorfahren.


XE6: Macht nichts.
Du könntest das zwar immernoch berichtigen, aber es gibt dort eh noch kein XE6.
Darfst aber gern den Bug-Report puschen: http://www.delphipraxis.net/issue-433/
Danke für die Info
Hab mal gepusht ^^

Darf ich mal fragen, wozu man soetwas benötigt und warum ein Delphi-Referenz durchsuchenVariant hier nicht infrage kommt?
Weil mir die Datentypen die Variant unterstützt nicht ausreichen.

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 22:53
Nja, es gibt auch noch den OleVariant, der sich besser für die Kapselung "unbekannter" OLE-Interfaces macht.

Und da Delphi ein Problem mit überlaenen Default-Properties hat (das geht einfach nicht), hatte ich mir auch schonmal einen "varianten" Typen selber gebastelt.

Dank Record-Operatoren ist das eine nette Angelegenheit.
Bei mir war es ein Typ, welcher String und Integer untersützt und das wesentlich leichtgewichtiger, als der große Variant.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 07:09
Darf ich mal fragen, wozu man soetwas benötigt und warum ein Delphi-Referenz durchsuchenVariant hier nicht infrage kommt?
Weil mir die Datentypen die Variant unterstützt nicht ausreichen.
Das ist ein Argument. Allerdings frage ich mich, wie Du beim Konstrukt var3.Value.Message zur Laufzeit auf Message zugreifen willst, wo Du doch zur Designzeit gar nicht wissen kannst, das diese Property existiert. D.h. wie würde der konkrete Code denn aussehen?

Weil das im Vergleich zu Generics deutlich langsamer wäre und auch keinen Sinn macht, wenn man das Problem mit Generics typsicher und performant lösen kann.
Was ihr immer mit eurem 'deutlich langsamer' habt. Es ist nicht 'deutlich' langsamer, sondern höchstens ein wenig und dann auch nur bei Zugriff. Beim Transport fällt das nicht ins Gewicht. Und wenn es sich nicht um Hochgeschwindigkeitsiterationen handelt, ist es eh zweitrangig. Was hier jedoch ins Gewicht fiele, wäre die Tatsache, das alles schon vorhanden ist. 'Performance' spielt auch bei der Entwicklung eine Rolle. Aber jedem sein Bier.
Typsicherheit ist allerdings ein Argument.

Trotzdem würde mich interessieren, wozu man das benötigt, wo man die konkrete variable doch auch quasi direkt erzeugen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 09:25
Was ihr immer mit eurem 'deutlich langsamer' habt. Es ist nicht 'deutlich' langsamer, sondern höchstens ein wenig und dann auch nur bei Zugriff.
Bei der Zuweisung brauchen Variants ca. 25%-300% mehr Zeit als eine normale Zuweisung. Das kannst du ja leicht selbst prüfen. Je mehr in einer solchen Testschleife noch passiert desto kleiner ist der Unterschied zu Variants. Bei einer reinen Integerzuweisung z.B. kommt man an die 300% heran, bei einem IntToStr zusätzlich eher an die 25%.

Natürlich macht sich das erst bei einer großen Menge an Zuweisungen bemerkbar, da diese ansonsten vernachlässigbar ist. Trotzdem ist es wenig sinnvoll unnötigerweise Variants zu nutzen, wenn es anders geht. Wenn man dann einen solchen Quelltext an einer Stelle nutzt, der mehr Performance benötigt, muss man alles mühsam umstellen, nur weil man ohne Not bewusst die schlechtere Wahl getroffen hat...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 09:43
Und bei mir war es auch noch die Typsicherheit, welche bereits im Compiler und nicht erst zur Laufzeit geprüft werden sollte.
Wobei bei mir auch eben nur die beiden Typen (Integer und String) erlaubt waren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 16:08
...Trotzdem ist es wenig sinnvoll unnötigerweise Variants zu nutzen, wenn es anders geht.
Ja und nein (Ansichtssache) Zeit ist Geld und das Rad neu erfinden dauert Zeit, also Geld. Variants sind da und funktionieren. Beim Arbeiten mit Metadaten, also Daten, die Daten definieren, werden deren Werte (hier: die 'Variants') zu 99% transportiert und nur am Anfang und am Ende zugewiesen. Daher wird vermutlich (Glaskugel) der Performanceverlust zweitrangig sein.

Iterationen mit Variants würde ich aber auch nicht machen, und wenn Performance generell eine Rolle spielt, auch nicht. Und da der Umfang der Variants hier nicht ausreichend zu sein scheint, ist das eh alles Theorie.

Ach: Noch ein Argument für Variants: DevExpress, TDatasets etc kommen mit Variants wunderbar zurecht. Würdest Du dir dann eine eigene VCL schreiben? Oder eine Brücke, damit die generischen Dinger wieder in Variants übersetzt werden? Wieder extra Arbeit, wieder Geld.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 23:59
Darf ich mal fragen, wozu man soetwas benötigt und warum ein Delphi-Referenz durchsuchenVariant hier nicht infrage kommt?
Weil das im Vergleich zu Generics deutlich langsamer wäre und auch keinen Sinn macht, wenn man das Problem mit Generics typsicher und performant lösen kann.
Sebastian Jänicke
AppCentral
  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 05:57 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 by Thomas Breitkreuz