Διακριτικά τύπων και συναρτήσεις χρήστη
Το HotXLS εκθέτει ροές διακριτικών τύπων που ανήκουν στον καλούντα για απώλειας-ελεύθερη επιθεώρηση και προστατευμένη επανεγγραφή και στους δύο μηχανισμούς βιβλίων εργασίας, καθώς και ιεραρχικά μητρώα συναρτήσεων χρήστη για προσαρμοσμένους υπολογισμούς
Μοντέλο διακριτικών
Τα TXLSFormulaTokenClass, TXLSFormulaTokenKind και TXLSFormulaTokenSource ταξινομούν κάθε TXLSFormulaToken και καταγράφουν αν προήλθε από αναλυμένο κείμενο, κλασικά byte BIFF ή κάποια άλλη υποστηριζόμενη πηγή
| TXLSFormulaToken | Kind, Opcode, BaseOpcode, TokenClass, RawBytes, TextValue, NumberValue, IntegerValue, ArgumentCount, FunctionIndex, ExternSheetIndex, Row1, Col1, Row2, Col2, Row1Relative, Col1Relative, Row2Relative, Col2Relative, ReferenceUsesOffsets, Supported, ArrayRows, ArrayCols, ArrayValueCount και ArrayValues |
| TXLSFormulaTokenStream | DecodeBiff, Clone, CloneSyntaxTree, BindContext, CanCompileFor, CanWriteBiffAt, ReplaceReference, Count, Items, Source, FormulaText, FullyDecoded, Rgce, RgbExtra, BiffWritable και BiffVersion |
| TXLSCompiledFormula | Το CreateTokenStream επιστρέφει ένα κλώνο της ροής διακριτικών του μεταγλωττισμένου τύπου που ανήκει στον καλούντα |
Δέντρο σύνταξης
Η CloneSyntaxTree επιστρέφει ένα parsed δέντρο κόμβων TXLSSyntaxItem ιδιοκτησίας του καλούντα, για δομική επιθεώρηση: κάθε κόμβος αναφέρει το ItemType του, το literal payload (Value, IntValue, DecValue), τα αρχικά Spaces, τους συνδέσμους του δέντρου (Parent, Child, ChildCount), το φύλλο αναφοράς ως TXLSRangeItem μέσω του Range, και τα δεδομένα σταθεράς πίνακα (ArrayRows, ArrayCols, ArrayValueCount και οι εγγραφές TXLSArraySerVal στα ArrayValues). Το δέντρο είναι αποκομμένο αντίγραφο, ώστε η περιήγησή του να μην πειράζει ποτέ τους μεταγλωττισμένους τύπους του βιβλίου εργασίας, και τα μέλη μετάλλαξης (AddChild, PushChild, CopyObject, OffsetCopyReferences, AdjustForShift και τα TXLSRangeItem.CopyObject / AdjustForShift) υπάρχουν για εργαλεία που ξαναγράφουν ένα κλωνοποιημένο δέντρο πριν την επαναμεταγλώττιση
Σημεία εισόδου βιβλίου εργασίας
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 και SetFormulaTokens διατηρούν ρητή την ιδιοκτησία και επικυρώνουν το πλαίσιο, την έκδοση BIFF, την υποστήριξη διακριτικών, την ιδιοκτησία πινάκων και τα όρια αναφορών πριν αλλάξει ένα κελί
Μητρώα συναρτήσεων χρήστη
Τα TXLSUserFunctionResolver και TXLSUserFunctionRegistry παρέχουν αναζήτηση με όνομα μέσω των RegisterHandler, UnregisterHandler, Clear, Contains, TryGetHandler και Count
Workbook.RegisterUserFunction('NETMARGIN', CalculateNetMargin);
Workbook.RegisterGlobalUserFunction('FISCALYEAR', CalculateFiscalYear);
try
Workbook.Calculate;
finally
Workbook.UnregisterUserFunction('NETMARGIN');
Workbook.UnregisterGlobalUserFunction('FISCALYEAR');
end;
Τα IXLSWorkbook, TXLSWorkbook και TXLSXWorkbook εκθέτουν τα RegisterUserFunction, UnregisterUserFunction, ClearUserFunctions, RegisteredUserFunctionCount, RegisterGlobalUserFunction, UnregisterGlobalUserFunction, ClearGlobalUserFunctions και RegisteredGlobalUserFunctionCount
Τα αντίστοιχα σημεία εισόδου σε επίπεδο μονάδας είναι τα XLSRegisterGlobalUserFunction, XLSUnregisterGlobalUserFunction, XLSClearGlobalUserFunctions, XLSRegisteredGlobalUserFunctionCount και XLSGlobalUserFunctionRegistered
Το TXLSCalculator.OnUserFunctionResolve συμμετέχει πριν από το παλαιού τύπου fallback γεγονότος και οι χειριστές μητρώου καλούνται εκτός του κλειδώματος του μητρώου, ώστε ένας χειριστής να μπορεί να απεγγραφεί με ασφάλεια
Επικίνδυνα ονόματα εξωτερικών συναρτήσεων και συναρτήσεων τύπου macro μπλοκάρονται πριν την αξιολόγηση των ορισμάτων και την αναζήτηση χειριστή, εκτός αν το AllowUnsafeFormulaCallbacks έχει ενεργοποιηθεί ρητά για το βιβλίο εργασίας ή για τη μεμονωμένη contextual αξιολόγηση· τα συνηθισμένα ονόματα συναρτήσεων χρήστη παραμένουν διαθέσιμα εξ ορισμού
Διαγνωστικά τύπων
Τα TXLSXFormulaIssueKind, TXLSXFormulaLocation και TXLSXFormulaIssue επιστρέφονται από το TXLSXWorkbook.AnalyzeFormulaIssues για ελλιπείς συναρτήσεις, εξωτερικές αναφορές και στοιχεία κυκλικών εξαρτήσεων
Επιθεώρηση φύλλων μακροεντολών
Το TXLSSheetKind διακρίνει φύλλο εργασίας, φύλλο μακροεντολών, φύλλο γραφήματος, μονάδα VBA και άγνωστες εγγραφές φύλλου μέσω του TXLSWorksheet.SheetKind· τα TXLSMacroRisk, TXLSMacroCommandInfo και TXLSMacroCommandArray περιγράφουν τα τυποποιημένα αποτελέσματα από το TXLSWorksheet.ScanMacroCommands
Τύποι Merged AutoFit και ταξινόμησης
Τα TXLSMergedAutoFitStrategy και TXLSXMergedAutoFitStrategy επιλέγουν πρώτη, τελευταία ή ισορροπημένη ανάπτυξη για συγχωνευμένα εύρη, ενώ τα TXLSSortOrientation, TXLSSortFormulaMode και TXLSSortCompareEvent ελέγχουν κάθετη ή οριζόντια σταθερή ταξινόμηση και μετακίνηση τύπων