Documentação HotXLS

Rastreamento e auditoria de fórmulas

Visão geral

Depurar redes de fórmulas em grandes modelos Delphi exige rastrear como os valores das células fluem das variáveis de entrada até as agregações de resumo; o HotXLS fornece APIs de auditoria para rastrear precedentes e dependentes das fórmulas passo a passo

API de rastreamento de fórmulas

TXLSFormulaTracer reduz uma fórmula a partir de suas expressões mais internas e registra spans de origem, expressões substituídas, valores intermediários, tipos de passo e o estado exato da pilha de operandos antes e depois de cada passo

TXLSFormulaStepKind = (stPush, stReduce, stFunction);

TXLSFormulaStep = record
  Depth: Integer;
  Source: WideString;
  Expression: WideString;
  Value: Variant;
  StepKind: TXLSFormulaStepKind;
  StackBefore: WideString;
  StackAfter: WideString;
  TokenStart: Integer;
  TokenEnd: Integer;
end;
        

Source é o texto da subexpressão original, Expression substitui operandos já avaliados pelos seus valores, e Value é o resultado do passo; StackBefore / StackAfter são snapshots da pilha de operandos separados por vírgulas e TokenStart / TokenEnd fixam o passo a um span de caracteres com base 1 na fórmula de origem

TraceReversed retorna os mesmos dados imutáveis de passos em ordem inversa de avaliação, para interfaces de passo para trás

Debugger interativo

TXLSFormulaDebugger constrói um modelo completo de nós analisados e depois registra a execução real sem avaliar ramificações lazy não selecionadas

TXLSFormulaDebugNodeKind = (fdnNumber, fdnString, fdnBoolean, fdnReference,
  fdnRange, fdnParentheses, fdnUnary, fdnPercent, fdnBinary, fdnFunction);
TXLSFormulaDebugState = (fdsPending, fdsEvaluated, fdsSkipped, fdsError);
TXLSFormulaDebugBranch = (fdbNone, fdbIfTrue, fdbIfFalse, fdbIfErrorValue,
  fdbIfErrorFallback, fdbChoose, fdbIfs, fdbSwitch);
TXLSFormulaDependencyKind = (fdkCell, fdkRange, fdkDefinedName);
        

A sessão retornada expõe operandos, valores intermediários, spans de origem, dependências estáticas, ordem de avaliação, escolhas de ramificação, nós ignorados, erros de fórmula padrão e origens de erros propagados. Cada TXLSFormulaDebugNode informa sua posição na árvore (NodeId, ParentNodeId, Depth), Kind e State, span de origem, ids e valores dos nós operandos, a Branch tomada e a tripla de erro registrada (ErrorCode, ErrorText, ErrorOriginNodeId); cada TXLSFormulaDependency informa Kind mais a planilha resolvida, o texto da referência, os limites e o estado de avaliação de um precedente

Métodos de cursor permitem que a aplicação avance ou volte pela sessão ou busque um nó sem recalcular a fórmula

Recursos de auditoria

Verifique as principais interfaces para auditoria de fórmulas abaixo