Metódy SaveSemanticSnapshot a ComputeSemanticHash
Streamuje verzovanú kanonickú reprezentáciu sémantiky zošita alebo vypočíta SHA-256 presne týchto bajtov
Syntax
procedure SaveSemanticSnapshot(AStream: TStream); overload; procedure SaveSemanticSnapshot(AStream: TStream; AProfile: TXLSSemanticSnapshotProfile; AOptions: TXLSSemanticSnapshotOptions); overload; function ComputeSemanticHash: WideString; overload; function ComputeSemanticHash( AProfile: TXLSSemanticSnapshotProfile; AOptions: TXLSSemanticSnapshotOptions): WideString; overload;
Metódy sprístupňujú klasické IXLSWorkbook a TXLSWorkbook v lxHandle a TXLSXWorkbook v lxHandleX
Typy profilu a volieb sú deklarované v lxSemanticSnapshot a sú viditeľné cez obe jednotky zošita
Profily
| Hodnota | Význam |
|---|---|
xlsspContent | Kanonický obsah zošita vhodný na bežné kontroly sémantickej identity |
xlsspSecurityComplete | Obsah plus podporovaný nepriehľadný stav zabezpečenia a zachovania, z bežnej identity obsahu zámerne vylúčený |
Voľby
| Hodnota | Zahrnutý stav |
|---|---|
xlssoIncludeViewerState | Výbery, stav aktívneho zobrazenia a ďalší podporovaný stav orientovaný na prehliadač |
xlssoIncludeVolatileMetadata | Podporované časové pečiatky, metadáta výrobcu a ďalšie zámerne prchavé polia |
xlssoIncludeFormulaCachedResults | Uložené výsledky vzorcov a podporované medzipamäte externých odkazov bez prepočtu a externých vstupno-výstupných operácií |
Preťaženia bez parametrov používajú xlsspContent s prázdnou sadou volieb
Pravidlá streamovania a identity
SaveSemanticSnapshotzapisuje na aktuálnu pozíciu cieľového streamu a neposúva sa, nevlastní ho a neuvolňuje ho- Zlyhanie zápisu po prúde môže v cieli zanechať úvodnú časť, takže volajúci vyžadujúci atómové publikovanie by mali najprv zapisovať do dočasného cieľa a až potom nahradiť konečný cieľ
ComputeSemanticHashvráti 64 malých šestnástkových znakov a počíta hash prírastkovo bez pridelenia úplnej vyrovnávacej pamäti snímky- Snímka je sémantický protokol HotXLS, nie dokument XLS, XLSX, ODS, CSV ani PDF
- Porovnávajte snímky alebo hashe len vtedy, keď sa zhodujú verzia protokolu, profil aj sada volieb
- Operácia neukladá, neprepočítava, neobnovuje odkazy, nepristupuje k externým prostriedkom a nemení medzipamäte zošita
Súbežnosť a chyby
Obidve metódy po celý čas prechodu držia prenájom čítania zošita
Súbežná verejná mutácia zlyhá s EXLSWorkbookWriteGuardUnavailable skôr, než sa zmení stav zošita, zatiaľ čo zistená zmena generácie alebo nepodporovaná nejednoznačná sémantická štruktúra vyvolá EXLSSemanticSnapshot
Príklad pre Delphi
var
Snapshot: TFileStream;
Hash: WideString;
begin
Snapshot:= TFileStream.Create('workbook.semantic', fmCreate);
try
Workbook.SaveSemanticSnapshot(Snapshot,
xlsspSecurityComplete,
[xlssoIncludeFormulaCachedResults]);
finally
Snapshot.Free;
end;
Hash:= Workbook.ComputeSemanticHash;
Príklad pre C++Builder
TFileStream *snapshot = new TFileStream(
L"workbook.semantic", fmCreate);
try
{
workbook->SaveSemanticSnapshot(snapshot);
}
__finally
{
delete snapshot;
}
WideString hash = workbook->ComputeSemanticHash();
Pozri tiež
Rozhranie IXLSWorkbook · Trieda TXLSXWorkbook · Metóda CreateReadOnlyView