HotXLS 문서

TXLSFormulaDebugger 클래스

TXLSFormulaDebugger는 하나의 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입니다

분기 진단은 true 및 false IF 경로, 값 및 대체 IFERROR 또는 IFNA 경로, 선택된 CHOOSE, IFS 또는 SWITCH 분기를 구분합니다

복구된 내부 오류는 최종 수식 결과가 유효한 경우에도 해당 노드에 계속 표시됩니다

탐색

예제

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;

참고 항목