Documentazione HotXLS

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