Tokeni formula i korisničke funkcije
HotXLS izlaže tokove tokena formula u vlasništvu pozivatelja za gubitke bez gubitaka i zaštićeni povratni zapis u oba pogona radnih knjiga, uz hijerarhijske registre korisničkih funkcija za prilagođeni izračun
Model tokena
TXLSFormulaTokenClass, TXLSFormulaTokenKind i TXLSFormulaTokenSource klasificiraju svaki TXLSFormulaToken i bilježe je li došao iz raščlanjenog teksta, klasičnih BIFF bajtova ili drugog podržanog izvora
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount i ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Rgce, RgbExtra, BiffWritable i BiffVersion |
| TXLSCompiledFormula | CreateTokenStream vraća klon toka tokena kompilirane formule u vlasništvu pozivatelja |
Sintaksno stablo
CloneSyntaxTree vraća parsirano stablo TXLSSyntaxItem čvorova u vlasništvu pozivatelja za strukturni uvid: svaki čvor izvještava svoj ItemType, literalni sadržaj (Value, IntValue, DecValue), vodeće Spaces, veze stabla (Parent, Child, ChildCount), referentni list kao TXLSRangeItem kroz Range te podatke konstanti polja (ArrayRows, ArrayCols, ArrayValueCount i unose TXLSArraySerVal u ArrayValues). Stablo je odvojena kopija, pa njegov obilazak nikada ne dira kompilirane formule radne knjige, a članovi za mutaciju (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift te TXLSRangeItem.CopyObject / AdjustForShift) postoje za alate koji prepisuju klonirano stablo prije ponovne kompilacije
Ulazne točke radne knjige
Tokens := Worksheet.ParseFormulaTokens('SUM(A1:A4)', 1, 1);
try
if Tokens.ReplaceReference(OldRef, NewRef) then
Worksheet.SetFormulaTokens(1, 1, Tokens);
finally
Tokens.Free;
end;
ParseFormulaTokens, GetFormulaTokens, FormulaTokensToText i SetFormulaTokens zadržavaju eksplicitno vlasništvo te provjeravaju kontekst, BIFF verziju, podršku za tokene, vlasništvo nad poljem i granice referenci prije nego što se ćelija promijeni
Registri korisničkih funkcija
TXLSUserFunctionResolver i TXLSUserFunctionRegistry pružaju pretragu po nazivu kroz RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler i Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;
IXLSWorkbook, TXLSWorkbook i TXLSXWorkbook izlažu RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions i RegisteredGlobalUserFunctionCount
IXLSWorkbook, TXLSWorkbook i TXLSXWorkbook izlažu RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions i RegisteredGlobalUserFunctionCount
Ekvivalentne ulazne točke na razini jedinice su XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount i XLSGlobalUserFunctionRegistered
TXLSCalculator.OnUserFunctionResolve sudjeluje prije povratnog poziva zastarjelog događaja, a rukovatelji registra pozivaju se izvan zaključavanja registra kako bi se rukovatelj mogao sigurno sam odjaviti
Dijagnostika formula
TXLSXFormulaIssueKind, TXLSXFormulaLocation i TXLSXFormulaIssue vraća TXLSXWorkbook.AnalyzeFormulaIssues za nedostajuće funkcije, vanjske reference i komponente kružnih referenci
Pregled makro-listova
TXLSSheetKind razlikuje radni list, makro-list, list grafikona, VBA modul i nepoznate zapise listova kroz TXLSWorksheet.SheetKind; TXLSMacroRisk, TXLSMacroCommandInfo i TXLSMacroCommandArray opisuju tipizirane rezultate TXLSWorksheet.ScanMacroCommands
Spajanje AutoFit i tipovi sortiranja
TXLSMergedAutoFitStrategy i TXLSXMergedAutoFitStrategy biraju prvi, zadnji ili uravnoteženi rast za spojene raspone, dok TXLSSortOrientation, TXLSSortFormulaMode i TXLSSortCompareEvent upravljaju vertikalnim ili horizontalnim stabilnim sortiranjem i premještanjem formula