E2221 $WEAKPACKAGEUNIT '%s' darf keinen Initialisierungs- oder Finalisierungscode enthalten (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
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.