TryGetCachedFormulaValue metodi
Lukee tallennetun kaavatuloksen laskematta kaavaa tai muuttamatta työkirjan tilaa
Metodi on käytettävissä sekä IXLSWorkbook- että TXLSXWorkbook-luokissa; pakettityökirjan toteutus kattaa XLSX- ja ODS-tiedostot
Moottoririippumaton koodi voi hankkia IXLSFormulaCacheReader-objektin kummastakin moottorista CreateFormulaCacheReader -metodilla ja käyttää samaa kyselymetodia
Syntaksi
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Koordinaatit ja paluuarvo
SheetIndex, Row ja Col ovat yhdestä alkavia
Metodi palauttaa True vain kaavasolulle, jonka välimuistin tila on xlfcsLoaded tai xlfcsCalculated
Kelvottomat koordinaatit, puuttuvat solut ja muut kuin kaavasolut palauttavat False tilalla xlfcsNotFormula
Kaava ilman tallennettua tulosta palauttaa False tilalla xlfcsMissing; aiemmin välimuistissa ollut kaava, jonka kaava tai laskenta epäonnistui muutoksen jälkeen, palauttaa False tilalla xlfcsInvalidated
Välimuistitiedot
TXLSFormulaCacheInfo-tietue luokittelee välimuistin kahdella yksikössä lxStandard julistetulla luettelotyypillä: State on TXLSFormulaCacheState ja Kind on TXLSFormulaCacheValueKind
| Kenttä | Merkitys |
|---|---|
State (TXLSFormulaCacheState) | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated tai xlfcsInvalidated |
Kind (TXLSFormulaCacheValueKind) | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean tai xlfcvError |
Value | Omistettu välimuistissa oleva Variant-arvo, kun metodi palauttaa True, muuten Unassigned |
Tyhjät tulokset, tyhjät merkkijonot, totuusarvo false, numeerinen nolla ja virheet säilyttävät erilliset lajit, eikä niitä käytetä välittäjinä välimuistin olemassaolon sijaan
BIFF-numeeriset välimuistit pysyvät Double-tyyppisinä, koska tietueessa ei ole päivämäärätyypin merkkiä; virhevälimuistit palautetaan varError-arvoina
Pakettityökirjoille OOXML t="d" ja ODF-päivämääräarvot palauttavat varDate-arvon, OOXML t="e" palauttaa varError-arvon, ja ODF:n välimuistissa oleva tyhjä solu säilytetään void-arvolajilla
Kaavan muuttaminen mitätöi sen aiemman välimuistin, kun taas välimuistissa olevan arvon sijoittaminen ja sen jälkeen kaavan sijoittaminen tallentaa lasketun välimuistin
Jokainen jaetun kaavan jäsen säilyttää oman välimuistinsa olemassaolon ja arvonsa; seuraajasolun kaava ilman tallennettua tulosta raportoi tilan xlfcsMissing sen sijaan, että se perisi juurijäsenen välimuistin
Ei laskentaa -sopimus
Metodi suorittaa suoran harvojen solujen haun, eikä se koskaan kutsu laskinta, käyttäjän funktion takaisinkutsua, kaavatokenien dekompilointia, riippuvuuksien päivityksiä, välimuistiin kirjoituksia tai muutostilan muutoksia
Käytä solun tavallista Value -ominaisuutta, kun laskenta tarvitaan
Lukijan elinkaari
CreateFormulaCacheReader palauttaa vain luku -sovittimen, jota tukee työkirjan elinkaaren mittainen laina ilman työkirjan omistajuuden siirtoa
Kun työkirja on tuhottu, mikä tahansa kyseisen sovittimen kautta tehty kysely nostaa EXLSFormulaCacheReaderInvalidated -poikkeuksen viittaamatta vapautettuun työkirjan tilaan
Esimerkki
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');