Thema: Delphi Spring4D: Nullables

Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

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

AW: Spring4D: Nullables

  Alt 16. Nov 2015, 10:44
TField.Value ist ein Variant. Und wenn man AsX (X sei der Typ des Felds, also string, Integer o.Ä.) führt bei Null zu einem Fehler. Daher gibts den Overload für Variant, so dass der Variant nicht erst in eine Null exception läuft sondern das "auspacken" dem Nullable überlässt.

Und nein, ein Nullable ist kein Variant! In einen Variant kann ich zur Laufzeit alles (*) reinpacken und der Variant ist fröhlich. In einen Nullable geht nur T oder ein Variant (wobei der Variant auch nur einen T beinhalten darf, es wird hier keine Konvertierung durchgeführt). Dass das nunmal nicht zur Compiletime geht liegt daran, dass es nicht im Compiler eingebaut ist. Dafür musst du dich an Embarcadero wenden.

(*) was in einen Variant passt

Wenn du in deinem Code die stellen aufdecken willst, die den Variant overload nutzen, dann schlag ich vor, pack nen deprecated an diesen Overload und du siehst beim Kompilieren jede Stelle, die den nutzt.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (16. Nov 2015 um 10:50 Uhr)
  Mit Zitat antworten Zitat