مستندات HotXLS

کلاس TXLSFormulaDebugger

TXLSFormulaDebugger یک فرمول را در زمینه یک کاربرگ XLSX تجزیه و تحلیل می‌کند و یک TXLSFormulaDebugSession مالکیت‌دار برمی‌گرداند

نشست درخت عبارت کامل تجزیه‌شده را با ترتیب ارزیابی واقعی، مقادیر میانی، مختصات وابستگی، شاخه‌های تنبل انتخاب‌شده، عبارت‌های ردشده و اولین مبدأ خطا ترکیب می‌کند

فراخواننده مالک هر نشستی است که توسط Analyze بازگردانده می‌شود و باید آن را آزاد کند

اعلام

type
  TXLSFormulaDebugger = class
    constructor Create(Worksheet: TXLSXWorksheet);
    function Analyze(const Formula: WideString):
      TXLSFormulaDebugSession;
  end;

اعضای نشست

Formulaمنبع عادی‌سازی‌شده بدون علامت مساوی اختیاری ابتدایی
FinalValueمقدار اسکالر محاسبه‌شده یا خطای فرمول استاندارد Variant
Nodesگره‌های تجزیه‌شده به ترتیب والد-قبل-فرزند
Dependenciesوابستگی‌های سلول، محدوده یا نام تعریف‌شده با مختصات کاربرگ حل‌شده در صورت موجود بودن
StepNodesگره‌ها به ترتیب ارزیابی قطعی، شامل گره‌های ردشده
CurrentNodeگره انتخاب‌شده توسط مکان‌نمای ناوبری تعاملی
ErrorOriginNodeIdعمیق‌ترین گرهی که خطای فرمول نهایی را ایجاد کرده است، یا 1- زمانی که نتیجه نهایی خطا نیست
ErrorCodeکد خطای اکسل حمل‌شده توسط مقدار خطای نهایی
ErrorTextمتن نمایشی اکسل مانند #DIV/0! یا #N/A

تشخیص گره

هر TXLSFormulaDebugNode والد، عمق، بازه منبع، نوع گره، نام عملگر یا تابع، شناسه‌های گره عملوند، مقادیر عملوند، مقدار نتیجه، نمایه ارزیابی، وضعیت، شاخه انتخاب‌شده و جزئیات خطای خود را گزارش می‌دهد

وضعیت گره fdsPending، fdsEvaluated، fdsSkipped یا fdsError است

تشخیص شاخه مسیرهای true و false IF، مسیرهای مقدار و بازگشت IFERROR یا IFNA و شاخه انتخاب‌شدهٔ CHOOSE، IFS یا SWITCH را متمایز می‌کند

خطاهای داخلی بازیابی‌شده حتی زمانی که نتیجه فرمول نهایی معتبر است روی گره‌های خود قابل مشاهده می‌مانند

ناوبری

مثال

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;

همچنین ببینید