E2171 最適化のため変数 '%s' をこの位置から参照することはできません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
評価モジュールまたは監視式が変数 <element> の値を取り出そうとしましたが,この変数の寿命はインスペクトする時点ではすでに終わっています。多くの場合,このエラーはプログラムの制御フローの中で特定の点から先は使用されない値がローカル変数に代入されたとコンパイラが判断した場合に発生します。
新しいアプリケーションを作成します。 フォーム上にボタンを配置します。 ボタンをダブルクリックして Click メソッドを作成します。 整数型のグローバル変数 c を実現部へ追加します。 Click メソッドにこのコードを追加します。 procedure TForm1.Button1Click(Sender: TObject); var a, b : integer; begin a := 10; b := 20; c := b; a := c; end; c への代入にブレークポイントを設定します。 アプリケーションをコンパイルして実行します。 ボタンを押します。 ブレークポイントに到達した後,[評価/変更]ダイアログボックスを開きます([実行|評価/変更])。 a を評価します。
コンパイラは a への最初の代入は,その値が決して使用されないため無効だと認識します。そのため,コンパイラは 2 番めの代入が発生するまで a の使用を延期します。変数 a は c が代入される点まで無効とみなされます。
有効な値を持っている変数を表示するのがただ 1 つの解決方法です。