Generación de la estructura del libro de trabajo cargado
Las generaciones estructurales permiten a un lector retener instantáneas de bajo costo y rechazar el recorrido después de que la topología del libro de trabajo de la que depende haya cambiado
Orígenes de generación
| Motor | Generación del almacén de celdas | Generación de la colección de hojas de cálculo |
|---|---|---|
| XLS clásico | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration or TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Cada propiedad es un valor UInt64 de solo lectura y la cantidad exacta en la que cambia no forma parte del contrato
Operaciones que invalidan
Crear, quitar o limpiar celdas almacenadas cambia la generación del almacén de celdas cuando la topología realmente cambia
La inserción y eliminación de filas o columnas, el movimiento de coordenadas, la anexión empaquetada o la materialización y las recompilaciones explícitas del índice de celdas también invalidan el estado de recorrido del almacén de celdas
Agregar, eliminar, mover o limpiar hojas de cálculo cambia la generación de la colección de hojas de cálculo cuando la colección realmente cambia
Operaciones que no invalidan
Cambiar el valor, la fórmula, el valor en caché o el formato de una celda existente no cambia la generación de su almacén de celdas
Renombrar o activar una hoja de cálculo no cambia la generación de la colección de hojas de cálculo, y los movimientos sin efecto, las eliminaciones inexistentes o la limpieza de una colección ya vacía conservan la generación actual
Validación
Llame a XlsValidateStructureGeneration antes de hacer avanzar o leer el estado de recorrido creado para una generación anterior
Una discrepancia genera EXLSLoadedCellCursorInvalidated, lo que permite a los llamadores distinguir la invalidación estructural de los errores de datos o de formato
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Cursor del libro de trabajo clásico
IXLSWorkbook.CreateLoadedCellCursor captura la generación agregada del libro de trabajo clásico y la valida antes de cada llamada a MoveNext y Current
El cursor recorre directamente las ramas asignadas del almacenamiento disperso con un estado de cursor constante y devuelve valores TXLSLoadedCellSnapshot de propiedad del llamador
La sobrecarga booleana inmoviliza si se incluyen los blancos almacenados con estilo independiente; los formatos heredados de fila, columna y hoja de cálculo no crean entradas en blanco en el cursor
Cursor del libro de trabajo XLSX
TXLSXWorkbook.CreateLoadedCellCursor captura una concesión ligada al tiempo de vida del libro de trabajo y una generación de topología agregada compartidas por todos los almacenes de celdas de las hojas de cálculo y la colección de hojas de cálculo
La ruta materializada lee los bloques dispersos de filas directamente, mientras que la ruta empaquetada reutiliza el iterador empaquetado sin materializar celdas ni retener punteros internos en las instantáneas
La sobrecarga booleana puede incluir los blancos almacenados que solo tienen estilo en cualquiera de las dos representaciones de almacenamiento, mientras que los marcadores de posición Empty y Null sin estilo permanecen excluidos
Liberar el libro de trabajo invalida su concesión antes de que se libere el almacenamiento de las hojas de cálculo, de modo que el acceso posterior al cursor genera EXLSLoadedCellCursorInvalidated
Límite de concurrencia
Las comprobaciones de generación solo proporcionan detección de falla inmediata y no hacen que la mutación y el recorrido simultáneos del libro de trabajo sean seguros para subprocesos