E2278 Adresse von lokalem Symbol %s kann nicht aufgenommen werden (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie haben versucht, ein Symbol in einer als local deklarierten Funktion oder Prozedur aufzurufen.

Mit local werden Routinen als nicht exportierbar gekennzeichnet. Dies ist plattformspezifisch und hat unter Windows keine Wirkung.

In Linux wird local für Routinen verwendet, die in eine Bibliothek compiliert, aber nicht exportiert werden. Die Direktive kann nur für eigenständige Prozeduren und Funktionen, nicht aber für Methoden verwendet werden. Hier ein Beispiel für eine als local deklarierte Routine:

function Contraband(I: Integer): Integer; local;

aktualisiert z. B. nicht das Register EBX. Dies hat für die Routine folgende Auswirkungen:

  • Sie kann nicht aus einer Bibliothek exportiert werden.
  • Die Routine kann nicht im interface-Abschnitt einer Unit deklariert werden.
  • Die Adresse der Routine kann nicht von einer Variable eines prozeduralen Typs übernommen oder einer solchen zugewiesen werden.
  • Wenn es sich um eine reine Assembler-Routine handelt, kann sie nur dann aus einer anderen Unit aufgerufen werden, wenn der Aufrufer das EBX-Register aktualisiert.