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

Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 01:42
Delphi-Version: 5
Hallo,

ich würde gerne ein Klasse erzeugen bei der ich beim erzeugen einen bestimmten Datentyp wählen kann den ich dann für eine Variable in der Klasse benutzen soll. Also z.B.

Delphi-Quellcode:
var
var1, var2, var3 : TVariable;
begin
var1 := TVariable<string>.Create;
var2 := TVariable<integer>.Create;
var3 := TVariable<TKlasse>.Create;

ShowMessage(var1.Value); // Gibt einen string aus
ShowMessage(IntToStr(var2.Value)); // Einen Integer
ShowMessage(var3.Value.Message); // TKlasse, jedoch wäre "Message" dann ein String
end;
Bin um jeden Tipp dankbar

Grüsse,
Milu

Edit: Ich benutze XE6 und nicht Delphi 5 nur mal so als anmerkung
Milos
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 22. Jul 2014, 01:57
Versuch es mal so:
Delphi-Quellcode:
type
  TVariable = class
  end;

  TVariable<T> = class(TVariable)
  private
    FVar: T;
  public
    constructor Create(Init: T);
  end;
Und zum Edit: Du hättest in den erweiterten Editor umschalten sollen, denn da hättest'e das bestimmt richtig ändern können.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

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
Online

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

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
 
#5

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
 
#6

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 jaenicke
jaenicke

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

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
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.039 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 13:30
Versuch es mal so:
Delphi-Quellcode:
type
  TVariable = class
  end;

  TVariable<T> = class(TVariable)
  private
    FVar: T;
  public
    constructor Create(Init: T);
  end;
Zu dumm nur, dass man mit einem TVariable nicht an den typisierten Value kommt.
Leute, versucht doch nicht immer alle Probleme mit Generics zu erschlagen, wo Generics überhaupt keinen Sinn machen.
Polymorphie und Generics passen nunmal nicht zusammen.

Bei Generics lege ich zur Compiletime fest, welchen Typ ich haben will und nicht zur Laufzeit.
Da würde ich fragen, warum lege ich die Typen der Variablen nicht gleich auf string, Integer und TKlasse fest.

Zum Transport von Werten, wo man zur Compilezeit noch nicht weiß, was dort reinkommt, gibt es TValue. Aber auch dort muss man wieder das herausholen, was man reingepackt hat (AsType<T> ).

Delphi-Quellcode:
var
  var1, var2, var3: TValue;
begin
  var1 := 'Hello World';
  var2 := 42;
  var3 := myObj;

  ShowMessage(var1.AsString);
  ShowMessage(IntToStr(var2.AsInteger); // Alternativ: var2.ToString
  ShowMessage(var3.AsType<TKlasse>.Message);
end;
Bitte dran denken: TValue ist strikt, was Typen angeht, hier findet keine Konvertierung von Typen statt, die nicht direkt zuweisungskompatibel sind (also wenn du z.B. einen Integer rein packst, dann wirft AsString eine Exception). ToString hingegen kann einige Typen zu einem String konvertieren.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (23. Jul 2014 um 13:39 Uhr)
  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 14:09 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