Formül İzleme ve Denetimi
Genel bakış
Büyük Delphi modellerinde formül ağlarını ayıklamak, hücre değerlerinin giriş değişkenlerinden özet toplamalara nasıl aktığını izlemeyi gerektirir; HotXLS, formül öncekilerini ve bağımlılarını adım adım izlemek için denetim API'leri sağlar
Formül izleme API'si
TXLSFormulaTracer, bir formülü en içteki ifadelerinden dışa doğru indirger ve her adımın öncesindeki ve sonrasındaki kaynak aralıklarını, yerine değerleri konmuş ifadeleri, ara değerleri, adım türlerini ve operand yığınının birebir durumunu kaydeder
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 orijinal alt ifade metnini, Expression değerlendirilmiş operandların yerine konmuş değerlerini, Value ise adımın sonucunu taşır; StackBefore / StackAfter virgülle ayrılmış operand yığını anlık görüntüleridir, TokenStart / TokenEnd ise adımı kaynak formülde 1 tabanlı bir karakter aralığına sabitler
TraceReversed, aynı değiştirilemez adım verisini, geriye adım arayüzleri için ters değerlendirme sırasıyla döndürür
Etkileşimli hata ayıklayıcı
TXLSFormulaDebugger eksiksiz bir ayrıştırılmış düğüm modeli oluşturur ve ardından seçilmemiş lazy dalları değerlendirmeden gerçek yürütmeyi kaydeder
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);
Döndürülen oturum; operandları, ara değerleri, kaynak aralıklarını, statik bağımlılıkları, değerlendirme sırasını, dal seçimlerini, atlanan düğümleri, standart formül hatalarını ve yayılan hataların kökenlerini açığa çıkarır. Her TXLSFormulaDebugNode ağaçtaki konumunu (NodeId, ParentNodeId, Depth), Kind ve State değerlerini, kaynak aralığını, operand düğüm kimliklerini ve değerlerini, seçilen Branch dalını ve kaydedilen hata üçlüsünü (ErrorCode, ErrorText, ErrorOriginNodeId) bildirir; her TXLSFormulaDependency ise bir öncekinin çözümlenmiş çalışma sayfasını, başvuru metnini, sınırlarını ve değerlendirme durumunu Kind ile birlikte bildirir
Cursor yöntemleri, uygulamanın formülü yeniden hesaplamadan oturum içinde ileri geri gitmesine veya tek bir düğüme atlamasına olanak tanır
Denetim özellikleri
Aşağıdaki temel formül denetimi arayüzlerini inceleyin
- HasFormula özelliği — Bir hücrenin formül içerip içermediğinin algılanması
- Formula özelliği — Formül belirteçlerini okuma veya değiştirme
- TXLSFormulaDebugger sınıfı — Ayrıştırılmış ağaç ve çalışma zamanı tanısı
- Hesaplama motoruna genel bakış — Yeniden hesaplama ayrıntıları