Drum kann der Compiler auch nicht Bescheid geben, wenn man vergißt ein Result zu initialisieren, welches vom Typ String, dyn. Array, Variant oder Interface ist.
Wieso nicht? C# kann das doch auch. Eine Variable ist genau dann nicht initialisiert, wenn -grob gesehen- das erste Anfassen der Variablen keine Zuweisung an diese Variable ist, also
Delphi-Quellcode:
if (variable) then...
CallMethod(variable); // Parameter ist kein var/out
someOtherVariable := variable;
variable := variable + 1;
Was vergessen? Bestimmt. Aber das Prinzip ist klar.
Zum Thema: So eine Warnung könnte der Compiler schon ausgeben und generell bei Konvertierungen zu warnen, wenn Daten verloren gehen könnten, dauert nun auch nicht länger, weil ja die konkrete Art der Konvertierung (Typ-A -> Typ-B) bekannt ist und man in einer einfachen Tabelle gucken könnte: "Meckern" / "Nicht meckern".
Ganz klar: Vergessen oder mit Absicht.