AGB  ·  Datenschutz  ·  Impressum  







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

How to TValue / TOmniValue

Ein Thema von haentschman · begonnen am 28. Dez 2013 · letzter Beitrag vom 28. Dez 2013
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 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.
Ein Therapeut entspricht 1024 Gigapeut.

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


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 10:03 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-2025 by Thomas Breitkreuz