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
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

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
Dejan Vu
(Gast)

n/a Beiträge
 
#13

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.580 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 17:36
Ach: Noch ein Argument für Variants: DevExpress, TDatasets etc kommen mit Variants wunderbar zurecht.
Bezüglich TDataSet mussten wir explizit AsString usw. nutzen, da ansonsten bei größeren Datenmengen die Performance in den Keller gegangen ist. Das Beispiel war mir nicht eingefallen, passt aber gut.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#15

AW: Variable mit bestimmbarem Datentyp?

  Alt 24. Jul 2014, 07:36
Bezüglich TDataSet mussten wir explizit AsString usw. nutzen, da ansonsten bei größeren Datenmengen die Performance in den Keller gegangen ist. Das Beispiel war mir nicht eingefallen, passt aber gut.
Wir hatten -glaube ich- schon einmal das Phänomen, das wir gegenteilige Beobachtungen bezüglich einzelner Delphi-Eigenheiten hatten. Ich war mit dem Dataset bisher eigentlich auch bezüglich Performance sehr zufrieden, sofern man das Dataset nicht gebunden hat, 'FieldByName' usw. nicht verwendet etc.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:46 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