مستندات HotXLS

الأسلوب TryGetCachedFormulaValue

يقرأ نتيجة صيغة مخزنة دون تقييم الصيغة أو تغيير حالة المصنف

يتوفر هذا الأسلوب في IXLSWorkbook و TXLSXWorkbookمعًا؛ ويغطي تنفيذ مصنف الحزمة ملفات XLSX وODS

يمكن للشيفرة المحايدة للمحرك الحصول على IXLSFormulaCacheReader من أي من المحركين عبر CreateFormulaCacheReader واستخدام أسلوب الاستعلام نفسه

البنية

function TryGetCachedFormulaValue(
  SheetIndex, Row, Col: Integer;
  out AInfo: TXLSFormulaCacheInfo): Boolean;

الإحداثيات والقيمة المعادة

SheetIndexو Rowو Col جميعها من الواحد

يعيد الأسلوب True فقط لخلية صيغة تكون حالة ذاكرتها المؤقتة xlfcsLoaded أو xlfcsCalculated

تعيد الإحداثيات غير الصالحة والخلايا الغائبة وخلايا غير الصيغ القيمة False مع xlfcsNotFormula

تعيد الصيغة التي بلا نتيجة مخزنة القيمة False مع xlfcsMissing؛ وتعيد الصيغة المخزنة مؤقتًا سابقًا التي فشلت صيغتها أو حسابها بعد تعديل القيمة False مع xlfcsInvalidated

معلومات الذاكرة المؤقتة

The TXLSFormulaCacheInfo وهو سجل يصنّف ذاكرة التخزين المؤقت عبر اثنين من الـ enums المعرَّفين في lxStandard: State is a TXLSFormulaCacheState and Kind a TXLSFormulaCacheValueKind

الحقلالمعنى
State (TXLSFormulaCacheState)xlfcsNotFormulaأو xlfcsMissingأو xlfcsLoadedأو xlfcsCalculatedأو xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlankأو xlfcvNumberأو xlfcvDateTimeأو xlfcvStringأو xlfcvBooleanأو xlfcvError
Valueقيمة Variant المملوكة المخزنة مؤقتًا عندما يعيد الأسلوب True، و Unassigned

تحتفظ النتائج الفارغة والسلاسل الفارغة والقيمة المنطقية false والعدد الصفري والأخطاء بأنواعها المميزة ولا تستخدم بدائل لوجود الذاكرة المؤقتة

تبقى ذاكرات الأعداد في BIFF من النوع Double لأن السجل لا يحوي مؤشر نوع تاريخ؛ وتُعاد ذاكرات الأخطاء كقيمة varError

في مصنفات الحزم، تعيد قيم التاريخ t="d" في OOXML وتواريخ ODF القيمة varDate، وتعيد t="e" في OOXML القيمة varError، وتُحفظ الخلية الفارغة المخزنة مؤقتًا في ODF مع نوع القيمة void value type

يؤدي تغيير صيغة إلى إبطال ذاكرتها المؤقتة السابقة، بينما يسجل تعيين قيمة مخزنة مؤقتًا ثم تعيين صيغتها ذاكرة محسوبة

يحتفظ كل عضو في صيغة مشتركة بوجود ذاكرته المؤقتة وقيمته الخاصين؛ وتبلّغ العضو التابع الذي بلا نتيجة مخزنة عن xlfcsMissing بدل وراثة ذاكرة العضو الجذر المؤقتة

عقد عدم الحساب

يجري الأسلوب بحثًا مباشرًا في الخلايا المتناثرة ولا يستدعي أبدًا الآلة الحاسبة أو دالة مستخدم ردّية أو فك ترميز رموز الصيغ أو تحديثات التبعيات أو كتابة ذاكرات مؤقتة أو تغييرات حالة الاتساخ

استخدم خاصية Value العادية للخلية عند الحاجة إلى الحساب

عمر القارئ

CreateFormulaCacheReader مهايئًا للقراءة فقط مسندًا إلى عقد عمر مصنف دون نقل ملكية المصنف

بعد إتلاف المصنف يرفع أي استعلام عبر ذلك المهايئ الاستثناء EXLSFormulaCacheReaderInvalidated بدل إلغاء الإشارة إلى حالة مصنف محررة

مثال

Reader := Workbook.CreateFormulaCacheReader;
if Reader.TryGetCachedFormulaValue(1, 4, 2, Info) then
  Memo1.Lines.Add(VarToStr(Info.Value))
else if Info.State = xlfcsMissing then
  Memo1.Lines.Add('Formula has no stored result');

انظر أيضًا