Geração de estrutura da pasta de trabalho carregada
Gerações estruturais permitem que um leitor retenha instantâneos de baixo custo e rejeite a travessia depois que a topologia da pasta de trabalho da qual depende mudou
Fontes de geração
| Mecanismo | Geração do armazenamento de células | Geração da coleção de planilhas |
|---|---|---|
| XLS clássico | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration ou TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Cada propriedade é um valor UInt64 somente leitura e a quantidade exata da mudança não é contratual
Operações que invalidam
Criar, remover ou limpar células armazenadas altera a geração do armazenamento de células quando a topologia realmente muda
Inserção e exclusão de linhas ou colunas, movimentação de coordenadas, acréscimo ou materialização empacotados e reconstruções explícitas do índice de células também invalidam o estado de travessia do armazenamento de células
Adicionar, excluir, mover ou limpar planilhas altera a geração da coleção de planilhas quando a coleção realmente muda
Operações que não invalidam
Alterar o valor, a fórmula, o valor em cache ou o formato de uma célula existente não altera a geração do seu armazenamento de células
Renomear ou ativar uma planilha não altera a geração da coleção de planilhas, e movimentações sem efeito, exclusões ausentes ou limpar uma coleção já vazia mantêm a geração atual
Validação
Chame XlsValidateStructureGeneration antes de avançar ou ler o estado de travessia criado para uma geração anterior
Uma divergência lança EXLSLoadedCellCursorInvalidated, permitindo que os chamadores distinguam invalidação estrutural de erros de dados ou formato
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Cursor da pasta de trabalho clássica
IXLSWorkbook.CreateLoadedCellCursor captura a geração agregada da pasta de trabalho clássica e a valida antes de cada chamada de MoveNext e Current
O cursor percorre diretamente os ramais alocados do armazenamento esparso com estado de cursor constante e retorna valores TXLSLoadedCellSnapshot próprios
A sobrecarga Boolean congela se células em branco armazenadas com estilo próprio são incluídas; formatos herdados de linha, coluna e planilha não criam entradas de cursor em branco
Cursor da pasta de trabalho XLSX
TXLSXWorkbook.CreateLoadedCellCursor captura uma concessão pelo tempo de vida da pasta de trabalho e uma geração de topologia agregada compartilhada por todo armazenamento de células de planilha e pela coleção de planilhas
O caminho materializado lê blocos esparsos de linhas diretamente, enquanto o caminho empacotado reutiliza o iterador empacotado sem materializar células nem reter ponteiros internos nos instantâneos
A sobrecarga Boolean pode incluir células em branco armazenadas somente com estilo em qualquer representação de armazenamento, enquanto os espaços reservados Empty e Null sem estilo permanecem excluídos
Liberar a pasta de trabalho invalida sua concessão antes que o armazenamento de planilhas seja liberado, de modo que o acesso posterior ao cursor lança EXLSLoadedCellCursorInvalidated
Limite de simultaneidade
As verificações de geração fornecem apenas detecção imediata de falhas e não tornam a mutação e a travessia concorrentes da pasta de trabalho seguras para threads