مستندات 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رمز خطأ Excel المحمول بواسطة قيمة الخطأ النهائية
ErrorTextنص عرض Excel مثل #DIV/0! أو #N/A

تشخيصات العقدة

يُبلّغ كل TXLSFormulaDebugNode عن أصله وعمقه ومدى المصدر ونوع العقدة واسم العامل أو الدالة ومعرّفات عُقد المعاملات وقيم المعاملات وقيمة النتيجة وفهرس التقييم والحالة والفرع المختار وتفاصيل الخطأ

حالة العقدة هي fdsPending أو fdsEvaluated أو fdsSkipped أو fdsError

تميّز تشخيصات الفروع بين مساري 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;

انظر أيضًا