Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: How to TValue / TOmniValue

  Alt 28. Dez 2013, 14:17
Das Erste kommt dem Nahe, was du eigentlich versuchen wolltest, also via Implicit-Operator, nur über eine "eigene" Variable.
Und das Letzte wäre ein explititer Cast, welchen ich eigentlich empfehlen würde.
Delphi-Quellcode:
// externer impliziter Cast über zusätzliche Variable
MyOmniValue := FTest; // MyOmniValue := TObject(FTest); so sähe die externe Variante des letzten Tipps aus (siehe nächsten Code-Block)
FBkGet.Schedule(FBkGet.CreateWorkItem(MyOmniValue));

// externe explizite Zuweisung über zusätzliche Variable
MyOmniValue.AsObject := FTest;
FBkGet.Schedule(FBkGet.CreateWorkItem(MyOmniValue));

// externer expliziter Cast über zusätzliche Variable
MyOmniValue := TOmniValue.CastFrom<TTest>(FTest);
FBkGet.Schedule(FBkGet.CreateWorkItem(MyOmniValue));

// interner expliziter Cast über automatisch generierte lokale Variable
FBkGet.Schedule(FBkGet.CreateWorkItem(TOmniValue.CastFrom<TTest>(FTest)));

Dein Rumgecaste sieht eher so bissl "sinnlos" aus.
TTest >= expliziter Cast über den TObject-Implicit-Operator => TOmniValue => aulesen über AsObject
=> TObject => automatischer impliziter Case über den selben Implicit-Operator => TOmniValue => TOmniValue => übergabe als Parameter

Wenn Letzteres geht, dann hätte ich es eher nochmal so versucht, damit der Compiler direkt mit dem TObject arbeitet und man die erste Zeile des vorhin genannten Casts auslässt:
FBkGet.Schedule(FBkGet.CreateWorkItem(TObject(FTest)));


[Edit] Oh, es ist schon gefixt.
Nja, selbst wenn du es selber gemeldet hättest, dann wäre es bestimmt sowieso nicht als Hotfix/Update für ältere Delphis gekommen.
"Kaufen sie doch was Neues" ist einfach zu nett.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Dez 2013 um 14:21 Uhr)
  Mit Zitat antworten Zitat