HotXLS-dokumentasjon

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