Dokumentace HotXLS

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