TXLSFormulaDebugger クラス
TXLSFormulaDebugger は、1 つの XLSX ワークシート コンテキストで数式を分析し、所有された TXLSFormulaDebugSession を返します
セッションは、完全な解析済み式ツリーと、実際の評価順序、中間値、依存座標、選択された遅延分岐、スキップされた式、最初のエラー発生源を組み合わせます
呼び出し側は、Analyze によって返されたすべてのセッションを所有し、解放する必要があります
宣言
type
TXLSFormulaDebugger = class
constructor Create(Worksheet: TXLSXWorksheet);
function Analyze(const Formula: WideString):
TXLSFormulaDebugSession;
end;
セッション メンバー
| Formula | 省略可能な先頭の等号を含まない正規化されたソース |
| FinalValue | 計算されたスカラー値または標準の Variant 数式エラー |
| Nodes | 親が子より先の順序で解析されたノード |
| Dependencies | 利用可能な場合、解決されたワークシート座標を持つセル、範囲、または定義名の依存関係 |
| StepNodes | スキップされたノードを含む、決定的な評価順序のノード |
| CurrentNode | 対話型のナビゲーション カーソルによって選択されたノード |
| ErrorOriginNodeId | 最終的な数式エラーの発生源となった最も深いノード。最終結果がエラーでない場合は -1 |
| ErrorCode | 最終的なエラー値が保持する Excel エラー コード |
| ErrorText | #DIV/0! や #N/A などの Excel 表示テキスト |
ノード診断
各 TXLSFormulaDebugNode は、その親、深さ、ソース スパン、ノード種別、演算子または関数名、オペランド ノード識別子、オペランド値、結果値、評価インデックス、状態、選択された分岐、エラーの詳細を報告します
ノードの状態は、fdsPending、fdsEvaluated、fdsSkipped、または fdsError です
分岐診断は、真と偽の IF パス、値とフォールバックの IFERROR または IFNA パス、選択された CHOOSE、IFS、または SWITCH 分岐を区別します
回復された内部エラーは、最終的な数式の結果が有効な場合でも、そのノード上で表示されたままになります
ナビゲーション
MoveFirstは最初の評価ステップを選択しますMoveNextとMovePreviousは、再計算せずに現在のカーソルを移動しますSeekNodeは、安定したセッション ローカル識別子で 1 つのノードを選択しますResetは、すべての診断を保持しながらカーソルをクリアします
例
Debugger := TXLSFormulaDebugger.Create(Sheet);
try
Session := Debugger.Analyze('=IF(A1=0,42,B1/C1)');
try
if Session.MoveFirst then
repeat
Writeln(Session.CurrentNode.Source);
until not Session.MoveNext;
finally
Session.Free;
end;
finally
Debugger.Free;
end;