E2155 Typ '%s' benötigt Finalisierung - im Dateityp nicht erlaubt (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi) - Index

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
      name : string;
    end;

  var
    inFile : file of Data;

begin
end.

String ist einer der Typen, für die ein besonderer Abschluss durchgeführt werden muss, und kann daher nicht in einem Dateityp gespeichert werden.


program Solve;

  type
    Data = record
      name : array[1.0,25] of Char;
    end;

  var
    inFile : file of Data;

begin
end.

Eine einfache Lösung für den Typ String ist die Neudeklaration des Typs als Zeichen-Array. In anderen Fällen, in denen ein besonderer Abschluss durchgeführt werden muss, wird es immer schwieriger, eine binäre Dateistruktur mit Standard-Pascal-Merkmalen wie "file of" aufrechtzuerhalten. In diesen Situationen ist es wahrscheinlich einfacher, spezialisierte Datei-E/A-Routinen zu schreiben.