E2171 Auf Variable '%s' kann wegen Optimierung nicht zugegriffen werden (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

Die Auswertungs- oder Überwachungsanweisung versucht, den Wert von <Element> abzurufen, aber der Compiler konnte feststellen, dass die tatsächliche Lebensdauer der Variablen vor diesem Prüfungszeitpunkt beendet war. Dieser Fehler tritt häufig auf, wenn der Compiler feststellt, dass einer lokalen Variable ein Wert zugewiesen wird, der nach einem bestimmten Punkt im Steuerfluss des Programms nicht mehr benutzt wird.


Erstellen Sie eine neue Anwendung.
Platzieren Sie eine Schaltfläche im Formular.
Klicken Sie doppelt auf die Schaltfläche aus, um zur Klick-Methode zu gelangen.
Fügen Sie eine globale Variable 'c' vom Typ Integer zum Implementierungsabschnitt hinzu.

Die Klick-Methode sollte folgendermaßen aussehen:

  procedure TForm1.Button1Click(Sender: TObject);
    var a, b : integer;
  begin
    a := 10;
    b := 20;
    c := b;
    a := c;
  end;

Setzen Sie einen Haltepunkt bei der zweiten Zuweisung zu c.
Compilieren Sie die Anwendung, und führen Sie sie aus.
Klicken Sie auf die Schaltfläche.
Wenn der Haltepunkt erreicht wird, öffnen Sie den Auswerter (Start/Auswerten/Ändern).
Werten Sie A aus.
    

Der Compiler bemerkt, dass die erste Zuweisung zu 'a' "tot" ist, da der Wert niemals benutzt wird. Aus diesem Grunde verzögert der Compiler sogar die Benutzung von 'a', bis die zweite Zuweisung erfolgt – bis zu dem Zeitpunkt, an dem 'c' zu 'a' zugewiesen wird, wird die Variable 'a' als "tot" erachtet und kann vom Auswerter nicht benutzt werden.

Die einzige Lösung liegt darin, nur Variablen anzeigen zu lassen, für die feststeht, dass sie "lebendige" Werte enthalten.