TXLSFormulaDebugger-klassen
TXLSFormulaDebugger analyserer en formel i én XLSX-regnearkkontekst og returnerer en eid TXLSFormulaDebugSession
Økten kombinerer hele det tolkede uttrykkstreet med den faktiske evalueringsrekkefølgen, mellomverdier, avhengighetskoordinater, valgte late grener, hoppede uttrykk og det første feilopphavet
Den som kaller, eier og må frigjøre enhver økt som returneres av Analyze
Deklarasjon
type
TXLSFormulaDebugger = class
constructor Create(Worksheet: TXLSXWorksheet);
function Analyze(const Formula: WideString):
TXLSFormulaDebugSession;
end;
Øktmedlemmer
| Formula | Normalisert kilde uten det valgfrie innledende likhetstegnet |
| FinalValue | Beregnet skalarverdi eller standard Variant-formelfeil |
| Nodes | Tolkede noder i rekkefølgen foreldre-før-barn |
| Dependencies | Celle-, område- eller definert-navn-avhengigheter med oppløste regnearkkoordinater der de er tilgjengelige |
| StepNodes | Noder i deterministisk evalueringsrekkefølge, inkludert hoppede noder |
| CurrentNode | Node valgt av den interaktive navigasjonsmarkøren |
| ErrorOriginNodeId | Dypeste node som ga opphav til den endelige formelfeilen, eller -1 når det endelige resultatet ikke er en feil |
| ErrorCode | Excel-feilkode som bæres av den endelige feilverdien |
| ErrorText | Excel-visningstekst som #DIV/0! eller #N/A |
Nodediagnostikk
Hver TXLSFormulaDebugNode rapporterer sin forelder, dybde, kildespenning, nodeart, operator- eller funksjonsnavn, operandnodeidentifikatorer, operandverdier, resultatverdi, evalueringsindeks, tilstand, valgt gren og feildetaljer
Nodetilstanden er fdsPending, fdsEvaluated, fdsSkipped eller fdsError
Grenediagnostikk skiller sanne og usanne IF-baner, verdi- og fallback-IFERROR- eller IFNA-baner, og den valgte CHOOSE-, IFS- eller SWITCH-grenen
Gjenopprettede indre feil forblir synlige på sine noder selv når det endelige formelresultatet er gyldig
Navigasjon
MoveFirstvelger det første evalueringstrinnetMoveNextogMovePreviousflytter den gjeldende markøren uten å regne på nyttSeekNodevelger én node etter dens stabile øktlokale identifikatorResettømmer markøren samtidig som all diagnostikk bevares
Eksempel
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;