Документация на HotXLS

Проследяване и одит на формули

Общ преглед

Отстраняването на грешки в мрежи от формули в големи модели на Delphi изисква проследяване как стойностите на клетките протичат от входните променливи към обобщените агрегации; HotXLS предоставя API за одит, които проследяват предшествениците и зависимите на формулите стъпка по стъпка

API за проследяване на формули

TXLSFormulaTracer разгръща формула от най-вътрешните ѝ изрази и записва исходните диапазони, заместените изрази, междинните стойности, видовете стъпки и точното състояние на стека с операнди преди и след всяка стъпка

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 е оригиналният текст на подизраза, Expression замества вече изчислените операнди с техните стойности, а Value е резултатът от стъпката; StackBefore / StackAfter са снимки на стека с операнди, разделени със запетаи, а TokenStart / TokenEnd закачат стъпката за диапазон от знаци (броен от 1) в изходната формула

TraceReversed връща същите неизменяеми данни за стъпките в обратен ред на изчисление за интерфейси със стъпка назад

Интерактивен дебъгер

TXLSFormulaDebugger изгражда пълен модел от разборени възли и после записва реалното изпълнение, без да изчислява неизбрани lazy клонове

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);
        

Върнатата сесия предоставя операнди, междинни стойности, исходни диапазони, статични зависимости, ред на изчисление, избори на клонове, пропуснати възли, стандартни грешки на формули и произходи на предадените грешки. Всеки TXLSFormulaDebugNode докладва позицията си в дървото (NodeId, ParentNodeId, Depth), Kind и State, исходния диапазон, идентификаторите и стойностите на операндните възли, избрания Branch и записаната тройка за грешка (ErrorCode, ErrorText, ErrorOriginNodeId); всеки TXLSFormulaDependency докладва Kind плюс разрешения лист, текста на препратката, границите и състоянието на изчисление на един предшественик

Cursor методите позволяват на приложението да се движи напред и назад из сесията или да скочи до конкретен възел, без да преизчислява формулата

Функции за одит

Разгледайте ключовите интерфейси за одит на формули по-долу