TXLSFormulaDebugger osztály
TXLSFormulaDebugger egy képletet elemez egy XLSX munkalap-kontextusban, és egy hívó tulajdonában lévő TXLSFormulaDebugSession objektumot ad vissza
A munkamenet a teljes elemzett kifejezésfát ötvözi a tényleges kiértékelési sorrenddel, a köztes értékekkel, a függőségi koordinátákkal, a kiválasztott lusta ágakkal, a kihagyott kifejezésekkel és az első hibaelőzménnyel
A hívó birtokolja, és köteles felszabadítani minden, az Analyze által visszaadott munkamenetet
Deklaráció
type
TXLSFormulaDebugger = class
constructor Create(Worksheet: TXLSXWorksheet);
function Analyze(const Formula: WideString):
TXLSFormulaDebugSession;
end;
Munkamenet-tagok
| Formula | Normalizált forrás az opcionális vezető egyenlőségjel nélkül |
| FinalValue | Kiszámított skaláris érték vagy standard Variant képlethiba |
| Nodes | Elemzett csomópontok szülő-a-gyerek-előtt sorrendben |
| Dependencies | Cella-, tartomány- vagy definiált név-függőségek feloldott munkalap-koordinátákkal, ahol elérhetők |
| StepNodes | Csomópontok determinisztikus kiértékelési sorrendben, beleértve a kihagyott csomópontokat is |
| CurrentNode | Az interaktív navigációs kurzor által kiválasztott csomópont |
| ErrorOriginNodeId | Az a legmélyebb csomópont, amely a végső képlethibát okozta, vagy -1, ha a végeredmény nem hiba |
| ErrorCode | A végső hibáérték által hordozott Excel-hibakód |
| ErrorText | Excel megjelenítési szöveg, például #DIV/0! vagy #N/A |
Csomópont-diagnosztika
Minden TXLSFormulaDebugNode jelenti a szülőjét, a mélységét, a forrástartományát, a csomópontfajtáját, az operátor- vagy függvénynevét, az operandus-csomópont-azonosítóit, az operandusértékeit, az eredményértékét, a kiértékelési indexét, az állapotát, a kiválasztott ágát és a hibadetailszait
A csomópontállapot fdsPending, fdsEvaluated, fdsSkipped vagy fdsError lehet
Az ágdiagnosztika megkülönbözteti az IF igaz és hamis útvonalait, az IFERROR vagy IFNA érték- és tartalékútvonalait, valamint a kiválasztott CHOOSE, IFS vagy SWITCH ágat
A visszanyert belső hibák láthatók maradnak a csomópontjaikon, még akkor is, ha a végső képleteredmény érvényes
Navigáció
MoveFirstaz első kiértékelési lépést választja kiMoveNextésMovePreviousmozgatja az aktuális kurzort újraszámítás nélkülSeekNodeegy csomópontot választ ki a stabil, munkamenet-lokális azonosítója alapjánResettörli a kurzort, miközben megőrzi az összes diagnosztikát
Példa
Debugger := TXLSFormulaDebugger.Create(Sheet);
try
Session := Debugger.Analyze('=IF(A1=0,42,B1/C1)');
try
if Session.MoveFirst then
repeat
Writeln(Session.CurrentNode.Source);
until not Session.MoveNext;
finally
Session.Free;
end;
finally
Debugger.Free;
end;