Sledování a audit vzorců
Přehled
Ladění sítí vzorců ve velkých modelech Delphi vyžaduje sledování, jak hodnoty buněk proudí ze vstupních proměnných do souhrnných agregací; HotXLS poskytuje rozhraní API pro audit, která krok za krokem sledují precedenty a dependenty vzorců
Rozhraní API pro sledování vzorců
TXLSFormulaTracer rozkládá vzorec od jeho nejvnitřnějších výrazů a zaznamenává zdrojové rozsahy, substituované výrazy, mezihodnoty, druhy kroků a přesný stav zásobníku operandů před každým krokem i po něm
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 je původní text podvýrazu, Expression nahrazuje už vyhodnocené operandy jejich hodnotami a Value je výsledek kroku; StackBefore / StackAfter jsou snímky zásobníku operandů oddělené čárkami a TokenStart / TokenEnd připnou krok na rozsah znaků číslovaný od 1 ve zdrojovém vzorci
TraceReversed vrací stejná neměnná data kroků v opačném pořadí vyhodnocování pro rozhraní typu krok zpět
Interaktivní debugger
TXLSFormulaDebugger vybuduje kompletní model rozparsovaných uzlů a poté zaznamená skutečné vykonávání bez vyhodnocování nevybraných líných větví
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);
Vrácená relace zpřístupňuje operandy, mezihodnoty, zdrojové rozsahy, statické závislosti, pořadí vyhodnocování, zvolené větve, přeskočené uzly, standardní chyby vzorců a původy propagovaných chyb. Každý TXLSFormulaDebugNode hlásí svou pozici ve stromu (NodeId, ParentNodeId, Depth), Kind a State, zdrojový rozsah, id a hodnoty operandových uzlů, zvolený Branch a zaznamenanou chybovou trojici (ErrorCode, ErrorText, ErrorOriginNodeId); každý TXLSFormulaDependency hlásí Kind plus vyřešený list, text odkazu, meze a stav vyhodnocení jednoho precedentu
Metody kurzoru umožní aplikaci postupovat relací vpřed nebo vzad nebo se přesunout na jeden uzel bez přepočítání vzorce
Funkce auditu
Podívejte se na klíčová rozhraní pro audit vzorců níže
- Vlastnost HasFormula — Zjištění, zda buňka obsahuje vzorec
- Vlastnost Formula — Čtení nebo úprava tokenů vzorce
- Třída TXLSFormulaDebugger — Diagnostika parsovacího stromu a běhu
- Přehled výpočetního stroje — Podrobnosti přepočítání