Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

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

AW: Variable mit bestimmbarem Datentyp?

  Alt 23. Jul 2014, 12: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 12:39 Uhr)
  Mit Zitat antworten Zitat