Dokumentacija HotXLS

TryGetCachedFormulaValue metoda

Čita uskladišteni rezultat formule bez njenog izračunavanja i bez menjana stanja radne sveske

Metoda je dostupna i na IXLSWorkbook i na TXLSXWorkbook; implementacija za radne sveske paketa pokriva datoteke XLSX i ODS

Kod nezavistan od mehanizma može od bilo kog mehanizma da dobije IXLSFormulaCacheReader preko CreateFormulaCacheReader i da koristi istu metodu upita

Sintaksa

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

Koordinate i povratna vrednost

SheetIndex, Rowi Col počinju od jedan

Metoda vraća True samo za ćeliju sa formulom čije je stanje keša xlfcsLoaded ili xlfcsCalculated

Nevažeće koordinate, nepostojeće ćelije i ćelije bez formule vraćaju False sa xlfcsNotFormula

Formula bez uskladištenog rezultata vraća False sa xlfcsMissing; nekada keširana formula čija se formula ili izračun pokvarili nakon mutacije vraća False sa xlfcsInvalidated

Podaci o kešu

Zapis TXLSFormulaCacheInfo klasifikuje keš kroz dva nabrajanja deklarisana u lxStandard: State je TXLSFormulaCacheState , a Kind a TXLSFormulaCacheValueKind

PoljeZnačenje
State (TXLSFormulaCacheState)xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculatedili xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBooleanili xlfcvError
ValueKeširana Variant vrednost u vlasništvu kada metoda vrati True, inače Unassigned

Prazni rezultati, prazni stringovi, Bulova vrednost false, numerička nula i greške zadržavaju različite vrste i ne koriste se kao zamenski pokazatelji postojanja keša

Numerički BIFF keševi ostaju Double jer zapis nema oznaku tipa datuma; keševi grešaka vraćaju se kao varError

Kod radnih sveski paketa OOXML t="d" i ODF vrednosti datuma vraćaju varDate, OOXML t="e" vraća varError, a ODF keširana prazna ćelija zadržava se sa tipom vrednosti void value type

Promena formule poništava važenje njenog prethodnog keša, dok dodela keširane vrednosti, a zatim i same formule, beleži izračunat keš

Svaki član deljene formule zadržava sopstveno postojanje keša i vrednost; sledbenik bez uskladištenog rezultata izveštava xlfcsMissing umesto da nasledi keš korenskog člana

Ugovor bez izračunavanja

Metoda izvodi direktno pretraživanje razređenih ćelija i nikada ne poziva izračunavač, povratni poziv korisničke funkcije, dekompilaciju tokena formule, ažuriranja zavisnosti, upise u keš niti promene stanja neažurnosti

Kada je izračunavanje potrebno, koristite uobičajeno svojstvo Value ćelije

Trajanje života čitača

CreateFormulaCacheReader vraća prilagodnik samo za čitanje potkrepljen zakupom u trajanju života radne sveske, bez prenosa vlasništva nad radnom sveskom

Nakon uništenja radne sveske svaki upit kroz taj prilagodnik podiže EXLSFormulaCacheReaderInvalidated umesto da dereferencira oslobođeno stanje radne sveske

Primer

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

Vidi takođe