Formelsporing og revisjon
Oversikt
Feilsøking av formelnettverk i store Delphi-modeller krever sporing av hvordan celleverdier flyter fra inngangsvariabler til oppsummerende aggregeringer; HotXLS tilbyr revisjons-API-er for å spore formelprecedenter og -avhengige trinn for trinn
Formelsporings-API
TXLSFormulaTracer reduserer en formel fra de innerste uttrykkene og registrerer kildespenn, substituerte uttrykk, mellomverdier, steentyper og nøyaktig operandstakktilstand før og etter hvert steg
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 er teksten til det opprinnelige deluttrykket, Expression erstatter allerede evaluerte operander med verdiene sine, og Value er resultatet av steget; StackBefore / StackAfter er kommadelte øyeblikksbilder av operandstakken, og TokenStart / TokenEnd foranker steget til et 1-basert tegnintervall i kildeformelen
TraceReversed returnerer de samme uforanderlige trinndataene i omvendt evalueringsrekkefølge, for grensesnitt som går baklengs gjennom sporet
Interaktiv Debugger
TXLSFormulaDebugger bygger en komplett modell av tolkede noder og registrerer deretter faktisk kjøring, uten å evaluere late grener som ikke er valgt
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);
Økten som returneres, avslører operander, mellomverdier, kildeintervaller, statiske avhengigheter, evalueringsrekkefølge, grenvalg, hoppede over noder, standard formelfeil og opphavet til propagererte feil. Hver TXLSFormulaDebugNode rapporterer sin treposisjon (NodeId, ParentNodeId, Depth), Kind og State, kildeintervall, operandnode-id-er og -verdier, den valgte Branch og den registrerte feiltrippen (ErrorCode, ErrorText, ErrorOriginNodeId); hver TXLSFormulaDependency rapporterer Kind pluss det løste arket, referanseteksten, grensene og evalueringsstatusen til én precedent
Cursor-metodene lar applikasjonen bevege seg fremover eller bakover gjennom økten, eller hoppe til én node, uten å beregne formelen på nytt
Revisjonsfunksjoner
Se de viktigste grensesnittene for formelrevisjon nedenfor
- Egenskapen HasFormula — Gjenkjenning av om en celle inneholder en formel
- Egenskapen Formula — Les eller endre formeltoken
- Klassen TXLSFormulaDebugger — Diagnose av tolket tre og kjøretid
- Oversikt over beregningsmotor — Detaljer om omregning