TXLSFormulaDebugger class
TXLSFormulaDebugger, tek bir XLSX çalışma sayfası bağlamında bir formülü çözümler ve sahiplenilmiş bir TXLSFormulaDebugSession döndürür
Oturum, eksiksiz ayrıştırılmış ifade ağacını gerçek değerlendirme sırası, ara değerler, bağımlılık koordinatları, seçilen tembel dallar, atlanan ifadeler ve ilk hata kaynağıyla birleştirir
Çağıran, Analyze tarafından döndürülen her oturumun sahibidir ve onu serbest bırakmalıdır
Bildirim
type
TXLSFormulaDebugger = class
constructor Create(Worksheet: TXLSXWorksheet);
function Analyze(const Formula: WideString):
TXLSFormulaDebugSession;
end;
Oturum üyeleri
| Formula | İsteğe bağlı baştaki eşittir işareti olmayan normalleştirilmiş kaynak |
| FinalValue | Hesaplanan skaler değer veya standart Variant formül hatası |
| Nodes | Üst-önce-çocuk sırasındaki ayrıştırılmış düğümler |
| Dependencies | Kullanılabilir olduğunda çözümlenmiş çalışma sayfası koordinatlarına sahip hücre, aralık veya tanımlı ad bağımlılıkları |
| StepNodes | Atlanan düğümler dahil belirlenimci değerlendirme sırasındaki düğümler |
| CurrentNode | Etkileşimli gezinme imleci tarafından seçilen düğüm |
| ErrorOriginNodeId | Son formül hatasının kaynağı olan en derin düğüm veya son sonuç bir hata değilken -1 |
| ErrorCode | Son hata değeri tarafından taşınan Excel hata kodu |
| ErrorText | #DIV/0! veya #N/A gibi Excel görüntüleme metni |
Düğüm tanılaması
Her TXLSFormulaDebugNode, üst öğesini, derinliğini, kaynak aralığını, düğüm türünü, işleç veya işlev adını, işlenen düğüm tanımlayıcılarını, işlenen değerlerini, sonuç değerini, değerlendirme dizinini, durumunu, seçilen dalı ve hata ayrıntılarını bildirir
Düğüm durumu fdsPending, fdsEvaluated, fdsSkipped veya fdsError değerlerinden biridir
Dal tanılaması, doğru ve yanlış IF yollarını, değer ve geri dönüş IFERROR veya IFNA yollarını ve seçilen CHOOSE, IFS veya SWITCH dalını ayırt eder
Kurtarılan iç hatalar, son formül sonucu geçerli olsa bile düğümlerinde görünür kalır
Gezinme
MoveFirst, ilk değerlendirme adımını seçerMoveNextveMovePrevious, yeniden hesaplamadan geçerli imleci hareket ettirirSeekNode, kararlı oturum yerel tanımlayıcısına göre bir düğüm seçerReset, tüm tanılamayı korurken imleci temizler
Örnek
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;