A betöltött munkafüzet struktúragenerációja
A strukturális generációk lehetővé teszik, hogy az olvasó olcsó pillanatképeket tartson meg, és elutasítsa a bejárást, miután a munkafüzet azon topológiája megváltozott, amelytől függ
Generációforrások
| Engine | Cellatárolás generációja | Munkalapgyűjtemény generációja |
|---|---|---|
| Classic XLS | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration vagy TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Minden tulajdonság csak olvasható UInt64 érték, és a változásának pontos mértéke nem szerződéses
Érvénytelenítő műveletek
Tárolt cellák létrehozása, eltávolítása vagy törlése megváltoztatja a cellatárolás generációját, amikor a topológia ténylegesen változik
Sor- vagy oszlopbeszúrás és -törlés, koordinátamozgatás, csomagolt hozzáfűzés vagy materializálás, valamint az explicit cellaindex-újraépítések szintén érvénytelenítik a cellatárolás bejárási állapotát
Munkalapok hozzáadása, törlése, mozgatása vagy törlése megváltoztatja a munkalapgyűjtemény generációját, amikor a gyűjtemény ténylegesen változik
Nem érvénytelenítő műveletek
Egy meglévő cella értékének, képletének, gyorsítótárazott értékének vagy formátumának módosítása nem változtatja meg a cellatárolás generációját
Egy munkalap átnevezése vagy aktiválása nem változtatja meg a munkalapgyűjtemény generációját, a hatástalan mozgatások, hiányzó törlések vagy egy már üres gyűjtemény kiürítése pedig megtartja az aktuális generációt
Validáció
Hívja meg az XlsValidateStructureGeneration metódust, mielőtt egy korábbi generációhoz létrehozott bejárási állapotot előremozdítana vagy kiolvasna
Az eltérés EXLSLoadedCellCursorInvalidated kivételt vált ki, lehetővé téve a hívók számára, hogy megkülönböztessék a strukturális érvénytelenítést az adat- vagy formátumhibáktól
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Klasszikus munkafüzet-kurzor
Az IXLSWorkbook.CreateLoadedCellCursor rögzíti a klasszikus munkafüzet aggregált generációját, és minden MoveNext és Current hívás előtt érvényesíti azt
A kurzor közvetlenül járja be a lefoglalt ritka tárolási ágakat állandó kurzorállapot mellett, és saját tulajdonú TXLSLoadedCellSnapshot értékeket ad vissza
A logikai túlterhelés rögzíti, hogy az önállóan formázott tárolt üres cellák belefoglalandók-e; az örökölt sor-, oszlop- és munkalapformátumok nem hoznak létre üres kurzorbejegyzéseket
XLSX munkafüzet-kurzor
A TXLSXWorkbook.CreateLoadedCellCursor a munkafüzet élettartamára szóló foglalást és aggregált topológiagenerációt rögzít, amelyet minden munkalap cellatárolója és a munkalapgyűjtemény megoszt
A materializált útvonal közvetlenül olvassa a ritka sorblokkokat, míg a csomagolt útvonal a csomagolt iterátort használja újra cellák materializálása vagy belső pointerek pillanatképekben való tárolása nélkül
A logikai túlterhelés mindkét tárolási reprezentációban belefoglalhatja a csak stílussal rendelkező tárolt üres cellákat, míg a formázatlan Empty és Null helyőrzők kizárva maradnak
A munkafüzet felszabadítása érvényteleníti a foglalását, mielőtt a munkalaptárolás felszabadulna, így a későbbi kurzor-hozzáférés EXLSLoadedCellCursorInvalidated kivételt vált ki
Egyidejűségi határ
A generáció-ellenőrzések csak fail-fast észlelést nyújtanak, és nem teszik szálbiztossá a munkafüzet egyidejű módosítását és bejárását