E2221 $WEAKPACKAGEUNIT '%s' darf keinen Initialisierungs- oder Finalisierungscode enthalten (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

Eine mit der Direktive $WEAKPACKAGEUNIT markierte Unit darf weder Quelltext für die Initialisierung bzw. Instanzauflösung noch globale Daten enthalten, weil in einer Anwendung mehrere Kopien dieser Unit vorhanden sein können. Wenn auf die Daten dieser Unit Bezug genommen wird, führt dies zu einem mehrdeutigen Ergebnis. Diese Mehrdeutigkeit vergrößert sich noch, wenn dynamisch geladene Packages in der Anwendung eingesetzt werden.


(*$WEAKPACKAGEUNIT*)
unit yamadama;
interface
implementation
  var
    Title : String;

initialization
  Title := 'Tiny Calc';
finalization
end.

In diesem Beispiel treten zwei Probleme auf: Title ist eine globale Variable und wird außerdem im initialization-Abschnitt der Unit initialisiert.

Dieses Problem kann auf zwei Arten gelöst werden: Entfernen Sie entweder die Direktive $weakpackageunit aus der Unit, oder löschen Sie alle globalen Daten sowie den Programmtext für die Initialisierung und die Finalisierung.