Generering av innlastet arbeidsbokstruktur
Strukturgenereringer lar en leser behandle rimelige øyeblikksbilder og avvise traversering etter at arbeidsboktopologien den er avhengig av, har endret seg
Genereringskilder
| Motor | Cellelager-generering | Arksamplingsgenerering |
|---|---|---|
| Classic XLS | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration eller TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Hver egenskap er en skrivebeskyttet UInt64-verdi, og den nøyaktige endringen av den er ikke kontraktuell
Ugyldiggjørende operasjoner
Å opprette, fjerne eller tømme lagrede celler endrer cellelager-genereringen når topologien faktisk endres
Rad- eller kolonneinnsetting og -sletting, koordinatflytting, pakket tillegging eller materialisering og eksplisitte gjenoppbygginger av celleindekser ugyldiggjør også cellelager-traverseringstilstanden
Å legge til, slette, flytte eller tømme ark endrer arksamplingsgenereringen når samlingen faktisk endres
Ikke-ugyldiggjørende operasjoner
Å endre verdien, formelen, bufrede verdi eller formatet i en eksisterende celle endrer ikke dens cellelager-generering
Å gi et ark nytt navn eller aktivere det endrer ikke arksamplingsgenereringen, og ikke-operasjoner som flytting, manglende sletting eller tømming av en allerede tom samling beholder den gjeldende genereringen
Validering
Kall XlsValidateStructureGeneration før du avanserer eller leser traverseringstilstand som ble opprettet for en tidligere generering
Et avvik utløser EXLSLoadedCellCursorInvalidated, slik at den som kaller, kan skille strukturell ugyldiggjøring fra data- eller formatfeil
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Classic-arbeidsbokmarkør
IXLSWorkbook.CreateLoadedCellCursor fanger den klassiske arbeidsbokens samlede generering og validerer den før hvert MoveNext- og Current-kall
Markøren traverserer tildelte sparse-lagringsgrener direkte med konstant markørtilstand og returnerer egne TXLSLoadedCellSnapshot-verdier
Boolean-overbelastningen fryser hvorvidt uavhengig stiledde lagrede tomceller tas med; arvede rad-, kolonne- og arkformater oppretter ingen tomme markøroppføringer
XLSX-arbeidsbokmarkør
TXLSXWorkbook.CreateLoadedCellCursor fanger en lease for arbeidsbokens levetid og en samlet topologigenerering som deles av hvert ark sitt cellelager og arksamlingen
Den materialiserte veien leser sparse radblokker direkte, mens den pakkede veien gjenbruker den pakkede iteratoren uten å materialisere celler eller beholde interne pekere i øyeblikksbildene
Boolean-overbelastningen kan ta med bare-styled lagrede tomceller i begge lagringsrepresentasjonene, mens ustyled Empty- og Null-plassholdere forblir utelatt
Å frigi arbeidsboken ugyldiggjør dens lease før arklagringen frigjøres, slik at senere markørtilgang utløser EXLSLoadedCellCursorInvalidated
Samtidighetsgrense
Genereringskontroller gir bare fail-fast-deteksjon og gjør ikke samtidig arbeidsbokmutasjon og traversering trådsikkert