الأسلوب 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');