Dokumentacija HotXLS

Praćenje i revizija formula

Pregled

Ispravljanje pogrešaka u mrežama formula u velikim Delphi modelima zahtijeva praćenje kako vrijednosti ćelija teku od ulaznih varijabli do sažetih agregacija; HotXLS pruža API-je za reviziju koji korak po korak prate prethodnike i ovisnike formula

API za praćenje formula

TXLSFormulaTracer rastavlja formulu od njezinih najunutarnjih izraza i bilježi izvorne raspone, supstituirane izraze, međuvrijednosti, vrste koraka te točno stanje operand-stacka prije i poslije svakog koraka

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 izvorni tekst podizraza, Expression već izračunate operande zamjenjuje njihovim vrijednostima, a Value je rezultat koraka; StackBefore / StackAfter su snimke operand-stacka odvojene zarezima, a TokenStart / TokenEnd vezuju korak uz raspon znakova s indeksiranjem od 1 u izvornoj formuli

TraceReversed vraća iste nepromjenjive podatke koraka u obrnutom redoslijedu evaluacije, za sučelja s korakom unatrag

Interaktivni debugger

TXLSFormulaDebugger gradi potpuni model parsiranih čvorova i zatim bilježi stvarno izvođenje bez evaluiranja neodabranih lijenih grana

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

Vraćena sesija izlaže operande, međuvrijednosti, izvorne raspone, statičke ovisnosti, redoslijed evaluacije, odabrane grane, preskočene čvorove, standardne pogreške formula i porijekla propagiranih pogrešaka. Svaki TXLSFormulaDebugNode izvještava svoj položaj u stablu (NodeId, ParentNodeId, Depth), Kind i State, izvorni raspon, id-ove i vrijednosti operand čvorova, odabranu Branch te zabilježenu tripletnu pogrešku (ErrorCode, ErrorText, ErrorOriginNodeId); svaki TXLSFormulaDependency izvještava Kind plus razriješeni list, tekst reference, granice i stanje evaluacije jednog prethodnika

Klasa TXLSFormulaTracer prati skokove izračuna tijekom petlji izračuna, prikupljajući koordinate ciljnih ćelija i aktivne tokene pri izvršavanju ogranaka izračuna

Značajke revizije

Pogledajte ključna sučelja za reviziju formula u nastavku