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
- Svojstvo HasFormula — Otkrivanje sadrži li ćelija formulu
- Svojstvo Formula — Čitanje ili izmjena tokena formula
- TXLSFormulaDebugger class — Parsed-tree and runtime diagnosis
- Pregled pogona za izračun — pojedinosti ponovnog izračunavanja