Képletkövetés és auditálás
Áttekintés
A képlethálózatok hibakeresése nagy Delphi modellekben megköveteli a cellaértékek áramlásának nyomon követését a bemeneti változóktól az összegző aggregációkig; a HotXLS auditálási API-kat biztosít a képlet-előzmények és függőségek lépésről lépésre történő követéséhez
Képletkövetési API
A TXLSFormulaTracer a képletet a legbelső kifejezéseitől kezdve redukálja, és rögzíti a forrástartományokat, a behelyettesített kifejezéseket, a köztes értékeket, a lépések típusát valamint az operandusverem pontos állapotát minden lépés előtt és után
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;
A Source az eredeti részkifejezés szövege, az Expression a már kiértékelt operandusokat helyettesíti az értékükkel, a Value pedig a lépés eredménye; a StackBefore / StackAfter vesszővel elválasztott operandusverem-pillanatfelvételek, a TokenStart / TokenEnd pedig a forrásképlet 1-alapú karaktertartományához rögzíti a lépést
A TraceReversed ugyanazt a nem módosítható lépésadatot adja vissza fordított kiértékelési sorrendben, lépés-vissza felületekhez
Interaktív debugger
A TXLSFormulaDebugger teljes elemzett csomópontmodellt épít, majd a tényleges végrehajtást rögzíti anélkül, hogy kiértékelné a ki nem választott lusta ágakat
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);
A visszaadott munkamenet operandusokat, köztes értékeket, forrástartományokat, statikus függőségeket, kiértékelési sorrendet, elágazási döntéseket, kihagyott csomópontokat, szabványos képlethibákat és a továbbgyűrűzött hibák eredetét teszi elérhetővé. Minden TXLSFormulaDebugNode jelenti a fa pozícióját (NodeId, ParentNodeId, Depth), a Kind és State értékeket, a forrástartományt, az operanduscsomópont-ok azonosítóit és értékeit, a választott Branch-öt, valamint a rögzített hibahármas (ErrorCode, ErrorText, ErrorOriginNodeId) értékét; minden TXLSFormulaDependency a Kind mellett jelenti a feloldott munkalapot, a hivatkozás szövegét, a határokat és egy előd kiértékelési állapotát
A kurzormetódusokkal az alkalmazás előre vagy hátra léphet a munkamenetben, vagy egyetlen csomópontra ugorhat a képlet újraszámítása nélkül
Auditálási funkciók
Ellenőrizze a kulcsfontosságú felületeket a képletek auditálásához alább
- HasFormula tulajdonság — Annak érzékelése, hogy egy cella tartalmaz-e képletet
- Formula tulajdonság — Képlettokenek olvasása vagy módosítása
- TXLSFormulaDebugger osztály — Elemzett fa és futásidejű diagnózis
- Számítási motor áttekintése — Újraszámítási részletek