Structuurgeneratie van geladen werkmappen
Structuurgeneraties laten een lezer goedkope momentopnames vasthouden en doorlopen verwerpen nadat de werkmaptopologie waarvan hij afhankelijk is, is gewijzigd
Generatiebronnen
| Engine | Generatie van celopslag | Generatie van werkbladverzameling |
|---|---|---|
| Klassieke XLS | TXLSWorksheet.CellStructureGeneration | TXLSWorksheets.StructureGeneration |
| XLSX | TXLSXWorksheet.CellStructureGeneration of TXLSXCells.StructureGeneration | TXLSXSheets.StructureGeneration |
Elke eigenschap is een alleen-lezen UInt64-waarde en de exacte mate waarin hij verandert is geen onderdeel van het contract
Ongeldig makende bewerkingen
Het aanmaken, verwijderen of leegmaken van opgeslagen cellen wijzigt de generatie van de celopslag wanneer de topologie daadwerkelijk verandert
Het invoegen of verwijderen van rijen of kolommen, coördinaatverschuivingen, packed toevoegen of materialiseren en expliciete herbouwingen van de celindex maken ook de doorloopstatus van de celopslag ongeldig
Het toevoegen, verwijderen, verplaatsen of leegmaken van werkbladen wijzigt de generatie van de werkbladverzameling wanneer de verzameling daadwerkelijk verandert
Bewerkingen die niet ongeldig maken
Het wijzigen van de waarde, formule, gecachte waarde of opmaak van een bestaande cel wijzigt zijn celopslaggeneratie niet
Het hernoemen of activeren van een werkblad wijzigt de generatie van de werkbladverzameling niet, en no-op-verplaatsingen, ontbrekende verwijderingen of het leegmaken van een al lege verzameling laten de huidige generatie onveranderd
Validatie
Roep XlsValidateStructureGeneration aan voordat u doorloopstatus opschuift of leest die voor een eerdere generatie is aangemaakt
Een mismatch veroorzaakt EXLSLoadedCellCursorInvalidated, zodat aanroepers structurele ongeldigverklaring kunnen onderscheiden van gegevens- of opmaakfouten
ExpectedGeneration := Worksheet.CellStructureGeneration;
{ Read or retain traversal state }
XlsValidateStructureGeneration(
ExpectedGeneration,
Worksheet.CellStructureGeneration);
Cursor van de klassieke werkmap
IXLSWorkbook.CreateLoadedCellCursor legt de geaggregeerde generatie van de klassieke werkmap vast en valideert die vóór elke aanroep van MoveNext en Current
De cursor doorloopt de toegewezen takken van de sparse-opslag rechtstreeks met constante cursorstatus en geeft eigen TXLSLoadedCellSnapshot-waarden terug
De booleaanse overload bevriest of onafhankelijk opgemaakte opgeslagen lege cellen worden opgenomen; overgeërfde rij-, kolom- en werkbladopmaak maakt geen lege cursoritems aan
Cursor van de XLSX-werkmap
TXLSXWorkbook.CreateLoadedCellCursor legt een lease voor de levensduur van de werkmap vast en een geaggregeerde topologiegeneratie die door de celopslag van elk werkblad en door de werkbladverzameling wordt gedeeld
Het gematerialiseerde pad leest sparse rijblokken rechtstreeks, terwijl het packed pad de packed-iterator hergebruikt zonder cellen te materialiseren of interne verwijzingen in momentopnames vast te houden
De booleaanse overload kan in beide opslagrepresentaties alleen op stijl gebaseerde opgeslagen lege cellen opnemen, terwijl onopgemaakte Empty- en Null-plaatshouders uitgesloten blijven
Het vrijgeven van de werkmap maakt zijn lease ongeldig voordat de werkbladopslag wordt vrijgegeven, zodat latere cursortoegang EXLSLoadedCellCursorInvalidated veroorzaakt
Grens voor gelijktijdigheid
Generatiecontroles bieden alleen fail-fast detectie en maken gelijktijdige werkmapmutatie en doorloop niet thread-veilig