TryGetCachedFormulaValue metoda
Čita pohranjeni rezultat formule bez njezina izračunavanja i bez mijenjanja stanja radne knjige
Metoda je dostupna i na IXLSWorkbook i na TXLSXWorkbook; implementacija za radne knjige paketa pokriva datoteke XLSX i ODS
Kôd neovisan o mehanizmu može od bilo kojeg mehanizma dobiti IXLSFormulaCacheReader putem CreateFormulaCacheReader i upotrijebiti istu metodu upita
Sintaksa
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Koordinate i povratna vrijednost
SheetIndex, Row i Col broje od jedan
Metoda vraća True samo za ćeliju s formulom čije je stanje predmemorije xlfcsLoaded ili xlfcsCalculated
Nevažeće koordinate, nepostojeće ćelije i ćelije bez formule vraćaju False uz xlfcsNotFormula
Formula bez pohranjenog rezultata vraća False uz xlfcsMissing; nekada predmemorirana formula čija se formula ili izračun pokvarili nakon mutacije vraća False uz xlfcsInvalidated
Podaci o predmemoriji
TXLSFormulaCacheInfo zapis klasificira predmemoriju kroz dva nabrajanja deklarirana u lxStandard: State je TXLSFormulaCacheState, a Kind TXLSFormulaCacheValueKind
| Polje | Značenje |
|---|---|
State | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated ili xlfcsInvalidated |
Kind | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean ili xlfcvError |
Value | Predmemorirana Variant vrijednost u vlasništvu kada metoda vrati True, inače Unassigned |
Prazni rezultati, prazni znakovni nizovi, Booleova vrijednost false, numerička nula i pogreške zadržavaju različite vrste i ne upotrebljavaju se kao zamjenski pokazatelji postojanja predmemorije
Brojčane BIFF predmemorije ostaju Double jer zapis nema oznaku vrste datuma; predmemorije pogrešaka vraćaju se kao varError
Kod radnih knjiga paketa OOXML t="d" i ODS vrijednosti datuma vraćaju varDate, OOXML t="e" vraća varError, a ODS predmemorirana prazna ćelija zadržava se s vrstom vrijednosti void
Promjena formule poništava valjanost njezine prijašnje predmemorije, dok dodjela predmemorirane vrijednosti, a zatim i same formule, bilježi izračunatu predmemoriju
Svaki član dijeljene formule zadržava vlastitu prisutnost predmemorije i vrijednost; sljednik bez pohranjenog rezultata izvještava xlfcsMissing umjesto da naslijedi predmemoriju korijenskog člana
Ugovor bez izračunavanja
Metoda izvodi izravno pretraživanje razrjeđenih ćelija i nikada ne poziva izračunavač, povratni poziv korisničke funkcije, dekompilaciju tokena formule, ažuriranja ovisnosti, upise u predmemoriju niti promjene stanja neažurnosti
Kada je izračun potreban, upotrijebite uobičajeno svojstvo Value ćelije
Životni vijek čitača
CreateFormulaCacheReader vraća prilagodnik samo za čitanje potkrijepljen zakupom u trajanju života radne knjige, bez prijenosa vlasništva nad radnom knjigom
Nakon uništenja radne knjige svaki upit kroz taj prilagodnik podiže EXLSFormulaCacheReaderInvalidated umjesto da dereferencira oslobođeno stanje radne knjige
Primjer
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');