AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Nullable VS Nullable

Ein Thema von WiPhi · begonnen am 9. Jan 2019 · letzter Beitrag vom 7. Feb 2019
 
Benutzerbild von Stevie
Stevie

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

AW: Nullable VS Nullable

  Alt 7. Feb 2019, 10:33
Besonders schön ist das die Klasse TTypeToNullableConverter nicht von mir, sondern auch aus Spring stammt und augenscheinlich mit dem Aurelius-Nullable klar kommt.
Die braucht man nicht - die von und nach Nullable<T> Konvertierung ist im TValueHelper direkt implementiert.
Diese benutzt aber die Implementierung, wie Spring4D sie hat und scheint nur mit Aurelius zu funktionieren, wird aber im Endeffekt Speicher korrumpieren. Bei Spring ist das interne FHasValue Feld ein String, damit auch lokale Variablen vom Typ Nullable<T> immer so initialisieren, dass sie signalisieren, null zu sein. Bei Aurelius ist es einfach ein Boolean. Hat auch Vorteile (kein expliziter Code für Init und Finalize für solche Variablen notwendig. Dafür sind sie erstmal in einem nicht definierten Zustand wie alle nicht gemanagten Wertetypen.

Wenn du ToType<Nullable<T>> für Aurelius Nullable<T> benutzt, wirst du dir Speicherlöcher schaffen und Speicher überschreiben, weil das intern auf das FHasValue Feld schreibt, was es für ein string Feld hält.

Aurelius ist im übrigen nicht die einzige Drittanbieter Komponente, die den Nullable Typen für sich entdeckt hat - da aber leider die Bereitschaft der meisten für Zusammenarbeit mit OpenSource Bibliotheken zusammen zu arbeiten gleich null ist, ist mir das dann auch egal, wenn der Klump nicht kompatibel ist. Ich wäre gern gewillt, bestimmte Teile so zu restrukturieren, dass sie gemeinsam mit anderen genutzt werden können, ohne dass jeder das Rad ein bisschen anders neu erfinden muss.

P.S. Ich werd mal zumindest schauen, dass er auch Aurelius Nullable korrekt konvertiert, ohne, dass es den Speicher zerfräst. Das sollte sich einfach genug machen lassen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 7. Feb 2019 um 10:45 Uhr)
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:56 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