Generacija strukture učitane radne sveske
Strukturne generacije omogućavaju čitaocu da zadrži jeftine snimke i odbije obilazak nakon što se promeni topologija radne sveske od koje on zavisi
Izvori generacija
| Mehanizam | Generacija skladišta ćelija | Generacija kolekcije radnih listova |
|---|---|---|
| Classic XLS | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration ili TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Svako svojstvo je vrednost UInt64 samo za čitanje, a tačan iznos promene nije ugovoren
Operacije koje poništavaju važenje
Kreiranje, uklanjanje ili pražnjenje uskladištenih ćelija menja generaciju skladišta ćelija kada se topologija zaista promeni
Umetanje i brisanje redova ili kolona, premeštanje koordinata, spakovano dodavanje ili materijalizacija i eksplicitna ponovna izgradnja indeksa ćelija takođe poništavaju važenje stanja obilaska skladišta ćelija
Dodavanje, brisanje, premeštanje ili pražnjenje radnih listova menja generaciju kolekcije radnih listova kada se kolekcija zaista promeni
Operacije koje ne poništavaju važenje
Promena vrednosti, formule, keširane vrednosti ili formata postojeće ćelije ne menja generaciju njenog skladišta ćelija
Preimenovanje ili aktiviranje radnog lista ne menja generaciju kolekcije radnih listova, a bezdelatna premeštanja, izostala brisanja ili pražnjenje već prazne kolekcije zadržavaju tekuću generaciju
Provera
Pozovite XlsValidateStructureGeneration pre napredovanja ili čitanja stanja obilaska kreiranog za raniju generaciju
Nesuglasnost podiže EXLSLoadedCellCursorInvalidated, omogućavajući pozivaocu da razlikuje strukturno poništavanje važenja od grešaka u podacima ili formatiranju
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Kursor klasične radne sveske
IXLSWorkbook.CreateLoadedCellCursor snima zbirnu generaciju klasične radne sveske i proverava je pre svakog poziva MoveNext i Current
Kursor obilazi direktno alocirane grane razređenog skladišta sa nepromenljivim stanjem kursora i vraća snimke TXLSLoadedCellSnapshot u vlasništvu
Bulovo preopterećenje zamrzava da li se uključuju samostalno stilizovane uskladištene prazne ćelije; nasleđeni formati reda, kolone i radnog lista ne stvaraju prazne zapise kursora
Kursor XLSX radne sveske
TXLSXWorkbook.CreateLoadedCellCursor snima zakup u trajanju života radne sveske i zbirnu generaciju topologije deljenu svakim skladištem ćelija radnih listova i kolekcijom radnih listova
Materijalizovani put čita razređene blokove redova direktno, dok spakovani put ponovo koristi spakovani iterator bez materijalizacije ćelija ili zadržavanja unutrašnjih pokazivača u snimcima
Bulovo preopterećenje može da uključi uskladištene prazne ćelije samo sa stilom u obe reprezentacije skladišta, dok nestilizovani rezervisani sadržaji Empty i Null ostaju isključeni
Otpuštanje radne sveske poništava važenje njenog zakupa pre nego što se skladište radnih listova oslobodi, pa kasniji pristup kursoru podiže EXLSLoadedCellCursorInvalidated
Granica konkurentnosti
Provere generacija pružaju samo otkrivanje sa trenutnim prekidom i ne čine istovremenu mutaciju radne sveske i obilazak bezbednim po nitima