TXLSFormulaDebugger-luokka
TXLSFormulaDebugger analysoi kaavan yhdessä XLSX-laskentataulukon kontekstissa ja palauttaa omistetun TXLSFormulaDebugSession-istunnon
Istunto yhdistää täydellisen jäsennetyn lausekepuun todelliseen arviointijärjestykseen, välivaiheen arvoihin, riippuvuuskoordinaatteihin, valittuihin hitaasti suoritettaviin haaroihin, ohitettuihin lausekkeisiin ja ensimmäiseen virheen alkuperään
Soittaja omistaa ja sen on vapautettava jokainen Analyze-kutsun palauttama istunto
Määrittely
type
TXLSFormulaDebugger = class
constructor Create(Worksheet: TXLSXWorksheet);
function Analyze(const Formula: WideString):
TXLSFormulaDebugSession;
end;
Istunnon jäsenet
| Formula | Normalisoitu lähde ilman valinnaista johtavaa yhtäläisyysmerkkiä |
| FinalValue | Laskettu skalaariarvo tai standardi Variant-kaavavirhe |
| Nodes | Jäsennetyt solmukset vanhempi-ennen-lasta-järjestyksessä |
| Dependencies | Solu-, alue- tai määriteltynimen riippuvuudet ratkaistuine laskentataulukkokoordinaatteineen, kun ne ovat saatavilla |
| StepNodes | Solmukset deterministisessä arviointijärjestyksessä, mukaan lukien ohitetut solmukset |
| CurrentNode | Interaktiivisen navigointikursorin valitsema solmus |
| ErrorOriginNodeId | Syvin solmus, joka aiheutti lopullisen kaavavirheen, tai -1, kun lopputulos ei ole virhe |
| ErrorCode | Lopullisen virhearvon sisältämä Excel-virhekoodi |
| ErrorText | Excelin näyttämä teksti, kuten #DIV/0! tai #N/A |
Solmusten diagnostiikka
Jokainen TXLSFormulaDebugNode raportoi vanhempansa, syvyyden, lähdealueen, solmuksen tyypin, operaattorin tai funktion nimen, operandisolmuksien tunnisteet, operandien arvot, tulosarvon, arviointi-indeksin, tilan, valitun haaran ja virhetiedot
Solmuksen tila on fdsPending, fdsEvaluated, fdsSkipped tai fdsError
Haaradiagnostiikka erottaa tosi- ja epätosi-IF-polut, arvo- ja varapolut IFERROR tai IFNA -funktioille sekä valitun CHOOSE, IFS tai SWITCH -haaran
Palautetut sisäiset virheet pysyvät näkyvissä omissa solmuksissaan, vaikka lopullinen kaavatulos olisi kelvollinen
Navigointi
MoveFirstvalitsee ensimmäisen arviointivaiheenMoveNextjaMovePrevioussiirtävät nykyistä kursoria laskematta uudelleenSeekNodevalitsee yhden solmuksen sen vakaan istuntokohtaisen tunnisteen perusteellaResettyhjentää kursorin säilyttäen kaikki diagnostiikkatiedot
Esimerkki
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;