Danke für euer Feedback. Die Idee mit einem eigenen Datenobjekten gefällt mir an sich recht gut, obwohl es dann halt wieder darauf hinaus läuft, dass es ein Mehraufwand darstellt
Über Variants habe ich gelesen, dass diese eher langsam im Vergleich zu den primitiven Datentypen sind, daher wollte ich darauf bisher eher verzichten. Aber ich will halt auch nicht einen Wert aus dem Wertebereich opfern müssen. Den Leerstring als NULL anzusehen ist, wie schon richtig bemerkt, auch nicht Sinn der Sache.
Ich glaube aber, dass es auf Variants hinauslaufen wird, zumindest meiner ersten Einschätzung nach. Man muss somit nicht all zu viel anpassen, wenn man schon fertige Objekte etc. hat und kann diesen Typ halt leicht in andere Formate umwandeln.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)