TryGetCachedFormulaValue yöntemi
Formülü değerlendirmeden veya çalışma kitabı durumunu değiştirmeden saklanan bir formül sonucunu okur
Yöntem hem IXLSWorkbook hem de TXLSXWorkbook üzerinde kullanılabilir; paket çalışma kitabı uygulaması XLSX ve ODS dosyalarını kapsar
Motor bağımsız kod, her iki motordan CreateFormulaCacheReader aracılığıyla bir IXLSFormulaCacheReader elde edebilir ve aynı sorgu yöntemini kullanabilir
Sözdizimi
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Koordinatlar ve dönüş değeri
SheetIndex, Row ve Col bire dayalıdır
Yöntem, yalnızca önbellek durumu xlfcsLoaded veya xlfcsCalculated olan bir formül hücresi için True döndürür
Geçersiz koordinatlar, olmayan hücreler ve formül olmayan hücreler xlfcsNotFormula ile birlikte False döndürür
Saklanan sonucu olmayan bir formül xlfcsMissing ile birlikte False döndürür; değişiklikten sonra formülü veya hesaplaması başarısız olan, daha önce önbelleğe alınmış bir formül ise xlfcsInvalidated ile birlikte False döndürür
Önbellek bilgileri
TXLSFormulaCacheInfo kaydı, önbelleği lxStandard içinde tanımlanan iki enum üzerinden sınıflandırır: State bir TXLSFormulaCacheState, Kind ise bir TXLSFormulaCacheValueKind değeridir
| Alan | Anlam |
|---|---|
State (TXLSFormulaCacheState) | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated veya xlfcsInvalidated |
Kind (TXLSFormulaCacheValueKind) | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean veya xlfcvError |
Value | Yöntem True döndürdüğünde sahip olunan önbelleğe alınmış Variant; aksi takdirde Unassigned |
Boş sonuçlar, boş dizeler, Boolean false, sayısal sıfır ve hatalar farklı türlerini korur ve önbellek varlığının göstergesi olarak kullanılmaz
BIFF sayısal önbellekleri, kayıtta tarih türü işareti bulunmadığı için Double olarak kalır; hata önbellekleri varError olarak döndürülür
Paket çalışma kitaplarında OOXML t="d" ve ODF tarih değerleri varDate döndürür, OOXML t="e" varError döndürür ve önbelleğe alınmış bir ODF boş değeri void değer türüyle korunur
Bir formülü değiştirmek eski önbelleğini geçersiz kılar; önbelleğe alınmış bir değer atayıp ardından formülünü atamak ise hesaplanmış bir önbellek kaydeder
Her paylaşılan formül üyesi kendi önbellek varlığını ve değerini korur; saklanan sonucu olmayan bir takipçi, kök üyenin önbelleğini devralmak yerine xlfcsMissing bildirir
Hesaplama yapılmaması sözleşmesi
Yöntem doğrudan bir seyrek hücre araması yapar; asla hesaplayıcıyı veya bir kullanıcı işlevi geri çağırmasını çalıştırmaz, formül belirteçlerini yeniden kaynak metne çözmez, bağımlılık güncellemesi, önbellek yazması veya kirli durum değişikliği yapmaz
Hesaplama gerektiğinde normal hücre Value özelliğini kullanın
Okuyucu yaşam süresi
CreateFormulaCacheReader, çalışma kitabı sahipliğini devretmeden, bir çalışma kitabı yaşam süresi kiralamasıyla desteklenen salt okunur bir bağdaştırıcı döndürür
Çalışma kitabı yok edildikten sonra bu bağdaştırıcı üzerinden yapılan her sorgu, serbest bırakılmış çalışma kitabı durumuna başvurmak yerine EXLSFormulaCacheReaderInvalidated oluşturur
Örnek
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');