Trazado y auditoría de fórmulas
Información general
La depuración de redes de fórmulas en modelos Delphi grandes requiere trazar cómo fluyen los valores de celda desde las variables de entrada hasta las agregaciones de resumen; HotXLS proporciona API de auditoría para trazar los precedentes y dependientes de las fórmulas paso a paso
API de trazado de fórmula
TXLSFormulaTracer reduce una fórmula desde sus expresiones más internas y registra tramos de origen, expresiones sustituidas, valores intermedios, tipos de paso y el estado exacto de la pila de operandos antes y después de cada paso
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 es el texto de la subexpresión original, Expression sustituye los operandos ya evaluados por sus valores y Value es el resultado del paso; StackBefore / StackAfter son instantáneas de la pila de operandos separadas por comas y TokenStart / TokenEnd fijan el paso a un tramo de caracteres basado en uno de la fórmula de origen
TraceReversed devuelve los mismos datos de paso inmutables en orden de evaluación inversa para interfaces de retroceso de paso
Depurador interactivo
TXLSFormulaDebugger construye un modelo completo de nodos analizados y luego registra la ejecución real sin evaluar las ramas diferidas no seleccionadas
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);
La sesión devuelta expone operandos, valores intermedios, tramos de origen, dependencias estáticas, orden de evaluación, decisiones de rama, nodos omitidos, errores de fórmula estándar y orígenes de error propagados. Cada TXLSFormulaDebugNode informa de su posición en el árbol (NodeId, ParentNodeId, Depth), Kind y State, tramo de origen, identificadores y valores de los nodos operando, la Branch tomada y el trío de error registrado (ErrorCode, ErrorText, ErrorOriginNodeId); cada TXLSFormulaDependency informa de Kind más la hoja resuelta, el texto de referencia, los límites y el estado de evaluación de un precedente
Los métodos de cursor permiten a la aplicación avanzar o retroceder por la sesión o buscar un nodo sin recalcular la fórmula
Funciones de auditoría
Consulte las interfaces clave para la auditoría de fórmulas a continuación
- Propiedad HasFormula — Detección de si una celda contiene una fórmula
- Propiedad Formula — Leer o modificar los tokens de fórmula
- Clase TXLSFormulaDebugger — Diagnóstico de árbol analizado y de ejecución
- Información general del motor de cálculo — Detalles de recálculo