เอกสาร HotXLS

การติดตามและตรวจสอบสูตร

ภาพรวม

การดีบักเครือข่ายสูตรในโมเดล Delphi ขนาดใหญ่ต้องการการติดตามว่าค่าเซลล์ไหลจากตัวแปรนำเข้าไปยังการรวมสรุปอย่างไร HotXLS จัดเตรียม API การตรวจสอบเพื่อติดตามตัวตั้งและตัวขึ้นของสูตรทีละขั้น

API การติดตามสูตร

TXLSFormulaTracer ลดรูปสูตรจากนิพจน์ชั้นในสุดออกไป พร้อมบันทึกช่วงต้นทาง, นิพจน์ที่แทนค่าแล้ว, ค่าระหว่างทาง, ชนิดของแต่ละขั้น และสถานะ operand stack ที่แน่นอนก่อนและหลังทุกขั้น

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 คือข้อความนิพจน์ย่อยต้นฉบับ, Expression แทน operand ที่ประเมินแล้วด้วยค่าของมัน และ Value คือผลลัพธ์ของขั้นนั้น; StackBefore / StackAfter เป็น snapshot ของ operand stack คั่นด้วยคอมมา ส่วน TokenStart / TokenEnd ระบุตำแหน่งของขั้นเป็นช่วงตัวอักษรแบบนับหนึ่งในสูตรต้นฉบับ

TraceReversed คืนข้อมูลขั้นตอนแบบ immutable ชุดเดิมในลำดับประเมินย้อนกลับ สำหรับ UI แบบถอยทีละขั้น

Debugger แบบโต้ตอบ

TXLSFormulaDebugger สร้างโมเดล parsed-node ที่สมบูรณ์แล้วบันทึกการ execute จริง โดยไม่ประเมิน lazy branch ที่ไม่ได้เลือก

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);
        

session ที่ได้กลับมาเปิดเผย operand, ค่าระหว่างทาง, ช่วงต้นทาง, dependency แบบ static, ลำดับการประเมิน, การเลือก branch, node ที่ถูกข้าม, formula error มาตรฐาน และต้นทางของ error ที่แพร่กระจาย แต่ละ TXLSFormulaDebugNode รายงานตำแหน่งในต้นไม้ (NodeId, ParentNodeId, Depth), Kind กับ State, ช่วงต้นทาง, node id กับค่าของ operand, Branch ที่ถูกเลือก และชุด error ที่บันทึกไว้ (ErrorCode, ErrorText, ErrorOriginNodeId); แต่ละ TXLSFormulaDependency รายงาน Kind พร้อมแผ่นงานที่ resolve แล้ว, ข้อความอ้างอิง, ขอบเขต และสถานะการประเมินของตัวตั้งหนึ่งตัว

เมธอด cursor ให้แอปพลิเคชันเดินไปหน้าหรือถอยหลังใน session หรือข้ามไปยัง node ใดก็ได้โดยไม่ต้องคำนวณสูตรซ้ำ

คุณสมบัติการตรวจสอบ

ตรวจสอบอินเทอร์เฟซหลักสำหรับการตรวจสอบสูตรด้านล่าง