Documentație HotXLS

Generația structurii registrului de lucru încărcat

Generațiile structurale permit unui cititor să rețină instantanee ieftine și să respingă parcurgerea după ce topologia registrului de lucru de care depinde s-a schimbat

Sursele generațiilor

MotorGenerația depozitului de celuleGenerația colecției de foi de lucru
Classic XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration sau TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Fiecare proprietate este o valoare UInt64 doar-citire, iar cantitatea exactă cu care se schimbă nu este contractuală

Operații care invalidează

Crearea, eliminarea sau golirea celulelor stocate schimbă generația depozitului de celule când topologia se schimbă efectiv

Inserarea și ștergerea de rânduri sau coloane, mutarea coordonatelor, adăugarea sau materializarea împachetată și reconstruirile explicite ale indicelui de celule invalidează de asemenea starea de parcurgere a depozitului de celule

Adăugarea, ștergerea, mutarea sau golirea foilor de lucru schimbă generația colecției de foi de lucru când colecția se schimbă efectiv

Operații care nu invalidează

Schimbarea valorii, formulei, valorii din cache sau formatului unei celule existente nu schimbă generația depozitului de celule al acesteia

Redenumirea sau activarea unei foi de lucru nu schimbă generația colecției de foi de lucru, iar mutările fără efect, ștergerile lipsă sau golirea unei colecții deja goale păstrează generația curentă

Validare

Apelați XlsValidateStructureGeneration înainte de a avansa sau de a citi starea de parcurgere creată pentru o generație anterioară

O nepotrivire ridică EXLSLoadedCellCursorInvalidated, permițând apelanților să distingă invalidarea structurală de erorile de date sau de format

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Cursorul registrului de lucru clasic

IXLSWorkbook.CreateLoadedCellCursor capturează generația agregată a registrului de lucru clasic și o validează înainte de fiecare apel MoveNext și Current

Cursorul traversează direct ramurile alocate ale stocării rare, cu stare de cursor constantă, și returnează valori TXLSLoadedCellSnapshot deținute

Supraîncărcarea booleană îngheață dacă golurile stocate cu stil independent sunt incluse; formatele moștenite de rând, coloană și foaie de lucru nu creează intrări goale în cursor

Cursorul registrului de lucru XLSX

TXLSXWorkbook.CreateLoadedCellCursor capturează un lease pe durata de viață a registrului de lucru și o generație agregată de topologie partajată de toate depozitele de celule ale foilor de lucru și de colecția foilor de lucru

Calea materializată citește direct blocurile rare de rânduri, în timp ce calea împachetată reutilizează iteratorul împachetat fără a materializa celule sau a reține pointeri interni în instantanee

Supraîncărcarea booleană poate include goluri stocate doar cu stil în oricare reprezentare de stocare, în timp ce placeholder-ele Empty și Null fără stil rămân excluse

Eliberarea registrului de lucru invalidează lease-ul său înainte ca stocarea foilor de lucru să fie eliberată, astfel încât accesul ulterior la cursor ridică EXLSLoadedCellCursorInvalidated

Limita de concurență

Verificările de generație oferă doar detecție fail-fast și nu fac mutația și parcurgerea concurentă ale registrului de lucru sigure pentru fire de execuție

Consultați și