Tracciamento e auditing delle formule
Panoramica
Il debug delle reti di formule nei modelli Delphi di grandi dimensioni richiede di tracciare come i valori delle celle fluiscono dalle variabili di input alle aggregazioni di sintesi; HotXLS fornisce API di auditing per tracciare i precedenti e i dipendenti delle formule passo dopo passo
API di tracciamento delle formule
TXLSFormulaTracer La classe TXLSFormulaTracer tiene traccia dei salti di calcolo durante i cicli di calcolo, raccogliendo le coordinate delle celle di destinazione e i token attivi durante l'esecuzione dei rami di calcolo
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 è il testo della sottoespressione originale, Expression sostituisce gli operandi già valutati con i loro valori e Value è il risultato del passo; StackBefore / StackAfter sono istantanee dello stack di operandi separate da virgole, mentre TokenStart / TokenEnd ancorano il passo a un intervallo di caratteri (base 1) nella formula sorgente
TraceReversed restituisce gli stessi dati immutabili dei passi in ordine di valutazione inverso, per le interfacce che supportano il passo indietro
Debugger interattivo
TXLSFormulaDebugger costruisce un modello completo dei nodi analizzati e registra poi l'esecuzione effettiva, senza valutare i rami lazy non selezionati
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);
La sessione restituita espone operandi, valori intermedi, span sorgente, dipendenze statiche, ordine di valutazione, scelte di ramo, nodi saltati, errori di formula standard e origini degli errori propagati. Ogni TXLSFormulaDebugNode riporta la propria posizione nell'albero (NodeId, ParentNodeId, Depth), Kind e State, lo span sorgente, id e valori dei nodi operando, il Branchseguito e la terna di errori registrata (ErrorCode, ErrorText, ErrorOriginNodeId); ogni TXLSFormulaDependency riporta Kind più il foglio risolto, il testo del riferimento, i limiti e lo stato di valutazione di un precedente
I metodi cursore permettono all'applicazione di avanzare o tornare indietro nella sessione, oppure di posizionarsi su un singolo nodo, senza ricalcolare la formula
Funzioni di auditing
Controlla le interfacce chiave per l'auditing delle formule di seguito
- Proprietà HasFormula — Rilevazione della presenza di una formula in una cella
- Proprietà Formula — Leggi o modifica i token delle formule
- Classe TXLSFormulaDebugger — Diagnosi dell'albero analizzato e a runtime
- Panoramica del motore di calcolo — Dettagli di ricalcolo