Formulių sekimas ir auditas
Apžvalga
Formulių tinklų klaidų šalinimas dideliuose Delphi modeliuose reikalauja sekti, kaip langelių reikšmės teka iš įvesties kintamųjų į suvestines agregacijas; HotXLS pateikia audito API, kurie žingsnis po žingsnio seka formulių pirmtakus ir priklausomuosius
Formulių sekimo API
Klasė TXLSFormulaTracer sekimo skaičiavimo ciklų metu stebi skaičiavimo šuolius, rinkdama tikslinių langelių koordinates ir aktyvius pavidalus vykdant skaičiavimo šakas
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 — originalus po-išraiškos tekstas, Expression jau ivertintus operandus pakeičia jų reikšmėmis, o Value — žingsnio rezultatas; StackBefore / StackAfter — kableliais atskirtos operandų krūvos momentinės kopijos, o TokenStart / TokenEnd žingsnį susieja su 1 pagrindo simbolių intervalu šaltinio formulėje
TraceReversed grąžina tuos pačius nekintamus žingsnių duomenis atvirkštine vertinimo tvarka — naudinga žingsnio-atgal sąsajoms
Interaktyvioji derintojas
TXLSFormulaDebugger suformuoja pilną išanalizuotų mazgų modelį ir tuomet įrašo realų vykdymą, nevertindamas nepasirinktų vėlinamų šakų
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);
Grąžintasis seansas atskleidžia operandus, tarpines reikšmes, šaltinio intervalus, statines priklausomybes, vertinimo tvarką, šakų pasirinkimus, praleistus mazgus, standartines formulės klaidas ir plistų klaidų kilmę. Kiekvienas TXLSFormulaDebugNode praneša savo medžio poziciją (NodeId, ParentNodeId, Depth), Kind ir State, šaltinio intervalą, operandų mazgų id ir reikšmes, pasirinktąją Branch bei užfiksuotą klaidų tripletą (ErrorCode, ErrorText, ErrorOriginNodeId); kiekviena TXLSFormulaDependency praneša Kind ir vieno precedentu išspręstą darbalapį, nuorodos tekstą, ribas ir vertinimo būseną
Žymeklio metodai leidžia programai judėti pirmyn ar atgal per seansą arba peršokti prie vieno mazgo, neperkaičiuojant formulės
Audito galimybės
Peržiūrėkite pagrindines formulių audito sąsajas toliau
- Savybė HasFormula — Langelio formulės turėjimo aptikimas
- Savybė Formula — Skaityti arba modifikuoti formulių pavidalus
- TXLSFormulaDebugger klasė — Išanalizuoto medžio ir vykdymo diagnostika
- Skaičiavimo variklio apžvalga — Perskaičiavimo informacija