Generación de estructura del libro cargado
Las generaciones estructurales permiten a un lector conservar instantáneas poco costosas y rechazar el recorrido después de que la topología del libro 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 vaciar celdas almacenadas cambia la generación del almacén de celdas cuando la topología cambia realmente
La inserción y eliminación de filas o columnas, el movimiento de coordenadas, el anexado empaquetado 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 vaciar hojas de cálculo cambia la generación de la colección de hojas de cálculo cuando la colección cambia realmente
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
Cambiar el nombre de una hoja de cálculo o activarla no cambia la generación de la colección de hojas de cálculo, y los movimientos sin efecto, las eliminaciones inexistentes o el vaciado 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 clásico
IXLSWorkbook.CreateLoadedCellCursor captura la generación agregada del libro 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 valores en blanco 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 XLSX
TXLSXWorkbook.CreateLoadedCellCursor captura una concesión ligada al tiempo de vida del libro 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 directamente los bloques dispersos de filas, 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 valores en blanco 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 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 una detección de fallo inmediato y no hacen que la mutación y el recorrido simultáneos del libro sean seguros para subprocesos