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
- Propriedade HasFormula — Detecção de se uma célula contém uma fórmula
- Propriedade Formula — Ler ou modificar tokens de fórmula
- Classe TXLSFormulaDebugger — Diagnóstico de árvore analisada e de execução
- Visão geral do mecanismo de cálculo — Detalhes do recálculo