E2154 Typ '%s' benötigt Finalisierung - nicht im Variant-Record erlaubt (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Bestimmte Typen werden vom Compiler intern auf besondere Weise behandelt: Sie müssen zuerst ordnungsgemäß abgeschlossen werden, damit gegebenenfalls die gesamten von ihnen zurzeit belegten Ressourcen freigegeben werden. Da der Compiler nicht feststellen kann, welcher Typ während der Programmausführung tatsächlich im Variantenabschnitt eines Datensatzes gespeichert ist, kann nicht garantiert werden, dass diese speziellen Datentypen ordnungsgemäß abgeschlossen werden.
program Produce; type Data = record case kind:Char of 'A': (str : String); end; begin end.
String ist einer der Typen, die eine besondere Behandlung vom Compiler erfordern, um die belegten Ressourcen ordnungsgemäß freigeben zu können. Aus diesem Grunde ist die Benutzung von String in einem Variant-Abschnitt nicht zulässig.
program Solve; type Data = record str : String; end; begin end.
Eine Lösung für diesen Fehler ist, alle betreffenden Deklarationen aus dem Variant-Abschnitt zu entfernen. Eine andere Möglichkeit wäre, Zeigertypen zu verwenden (beispielsweise ^String) und den Speicher selbst zu verwalten.