Τεκμηρίωση HotXLS

Κλάση TXLSFormulaDebugger

Το TXLSFormulaDebugger αναλύει έναν τύπο στο πλαίσιο ενός φύλλου εργασίας XLSX και επιστρέφει μια TXLSFormulaDebugSession που ανήκει στον καλούντα

Η συνεδρία συνδυάζει το πλήρες αναλυμένο δέντρο έκφρασης με την πραγματική σειρά αποτίμησης, τις ενδιάμεσες τιμές, τις συντεταγμένες εξαρτήσεων, τους επιλεγμένους τεμπέλικους κλάδους, τις παραλειπόμενες εκφράσεις και την πρώτη προέλευση σφάλματος

Ο καλών κατέχει και πρέπει να αποδεσμεύει κάθε συνεδρία που επιστρέφει το Analyze

Δήλωση

type
  TXLSFormulaDebugger = class
    constructor Create(Worksheet: TXLSXWorksheet);
    function Analyze(const Formula: WideString):
      TXLSFormulaDebugSession;
  end;

Μέλη συνεδρίας

FormulaΚανονικοποιημένη πηγή χωρίς το προαιρετικό αρχικό σύμβολο ισότητας
FinalValueΥπολογισμένη βαθμωτή τιμή ή τυπικό σφάλμα τύπου Variant
NodesΑναλυμένοι κόμβοι με σειρά γονέας-πριν-από-παιδί
DependenciesΕξαρτήσεις κελιών, περιοχών ή ονοματισμένων ονομάτων με επιλυμένες συντεταγμένες φύλλου εργασίας όταν είναι διαθέσιμες
StepNodesΚόμβοι με ντετερμινιστική σειρά αποτίμησης, συμπεριλαμβανομένων των παραλειπόμενων κόμβων
CurrentNodeΚόμβος που επιλέχθηκε από τον αλληλεπιδραστικό δρομέα πλοήγησης
ErrorOriginNodeIdΟ βαθύτερος κόμβος που προκάλεσε το τελικό σφάλμα τύπου, ή -1 όταν το τελικό αποτέλεσμα δεν είναι σφάλμα
ErrorCodeΚωδικός σφάλματος Excel που μεταφέρει η τελική τιμή σφάλματος
ErrorTextΚείμενο εμφάνισης Excel όπως #DIV/0! ή #N/A

Διαγνωστικά κόμβων

Κάθε TXLSFormulaDebugNode αναφέρει τον γονέα του, το βάθος, την έκταση πηγής, το είδος κόμβου, το όνομα τελεστή ή συνάρτησης, τα αναγνωριστικά κόμβων τελεστέων, τις τιμές τελεστέων, την τιμή αποτελέσματος, το ευρετήριο αποτίμησης, την κατάσταση, τον επιλεγμένο κλάδο και τις λεπτομέρειες σφάλματος

Η κατάσταση κόμβου είναι fdsPending, fdsEvaluated, fdsSkipped ή fdsError

Τα διαγνωστικά κλάδων διακρίνουν τις αληθείς και ψευδείς διαδρομές IF, τις διαδρομές τιμής και εναλλακτικής IFERROR ή IFNA και τον επιλεγμένο κλάδο CHOOSE, IFS ή SWITCH

Τα ανακτημένα εσωτερικά σφάλματα παραμένουν ορατά στους κόμβους τους ακόμη και όταν το τελικό αποτέλεσμα του τύπου είναι έγκυρο

Πλοήγηση

Παράδειγμα

Debugger := TXLSFormulaDebugger.Create(Sheet);
try
  Session := Debugger.Analyze('=IF(A1=0,42,B1/C1)');
  try
    if Session.MoveFirst then
      repeat
        Writeln(Session.CurrentNode.Source);
      until not Session.MoveNext;
  finally
    Session.Free;
  end;
finally
  Debugger.Free;
end;

Δείτε επίσης