Μέθοδος TryGetCachedFormulaValue
Διαβάζει ένα αποθηκευμένο αποτέλεσμα τύπου χωρίς να αξιολογεί τον τύπο ή να αλλάζει την κατάσταση του βιβλίου εργασίας
Η μέθοδος είναι διαθέσιμη τόσο στο IXLSWorkbook όσο και στο TXLSXWorkbook· η υλοποίηση βιβλίου εργασίας πακέτου καλύπτει αρχεία XLSX και ODS
Κώδικας ανεξάρτητος από μηχανή μπορεί να αποκτήσει ένα IXLSFormulaCacheReader από κάποια από τις δύο μηχανές μέσω του CreateFormulaCacheReader και να χρησιμοποιήσει την ίδια μέθοδο ερωτήματος
Σύνταξη
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Συντεταγμένες και τιμή επιστροφής
Τα SheetIndex, Row και Col έχουν αρίθμηση από τη μονάδα
Η μέθοδος επιστρέφει True μόνο για κελί τύπου του οποίου η κατάσταση cache είναι xlfcsLoaded ή xlfcsCalculated
Άκυρες συντεταγμένες, ανύπαρκτα κελιά και κελιά χωρίς τύπο επιστρέφουν False με xlfcsNotFormula
Ένας τύπος χωρίς αποθηκευμένο αποτέλεσμα επιστρέφει False με xlfcsMissing· ένας τύπος που είχε προηγουμένως cache και του οποίου ο τύπος ή ο υπολογισμός απέτυχαν μετά από μεταβολή επιστρέφει False με xlfcsInvalidated
Πληροφορίες cache
| Πεδίο | Σημασία |
|---|---|
State | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated ή xlfcsInvalidated |
Kind | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean ή xlfcvError |
Value | Η ιδιόκτητη cached τιμή Variant όταν η μέθοδος επιστρέφει True, διαφορετικά Unassigned |
Τα κενά αποτελέσματα, οι κενές συμβολοσειρές, το Boolean false, το αριθμητικό μηδέν και τα σφάλματα διατηρούν διακριτά είδη και δεν χρησιμοποιούνται ως δείκτες παρουσίας cache
Οι αριθμητικές cache του BIFF παραμένουν Double επειδή η εγγραφή δεν έχει δείκτη τύπου ημερομηνίας· οι cache σφαλμάτων επιστρέφονται ως varError
Για βιβλία εργασίας πακέτου, οι τιμές ημερομηνίας OOXML t="d" και ODF επιστρέφουν varDate, το OOXML t="e" επιστρέφει varError και ένα cached κενό ODF διατηρείται με τον τύπο τιμής void
Η αλλαγή ενός τύπου ακυρώνει την προηγούμενη cache του, ενώ η ανάθεση cached τιμής και ακολούθως ανάθεση του τύπου του καταγράφει μια υπολογισμένη cache
Κάθε μέλος κοινού τύπου διατηρεί τη δική του παρουσία cache και τιμή· ένας follower χωρίς αποθηκευμένο αποτέλεσμα αναφέρει xlfcsMissing αντί να κληρονομήσει την cache του ριζικού μέλους
Σύμβαση χωρίς υπολογισμό
Η μέθοδος εκτελεί απευθείας αναζήτηση σε αραιά κελιά και δεν καλεί ποτέ τον υπολογιστή, μια επανάκληση συνάρτησης χρήστη, αποσυμπίεση tokens τύπου, ενημερώσεις εξαρτήσεων, εγγραφές cache ή αλλαγές κατάστασης dirty
Χρησιμοποιήστε την κανονική ιδιότητα Value του κελιού όταν απαιτείται υπολογισμός
Διάρκεια ζωής reader
Το 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');