HotXLS-Dokumentation

Regex-Backend-API

lxRegex legt TXLSRegex offen, das zustandsbehaftete Backend, das die Regular-Expression-Funktionen des Calculators nutzen; gewöhnliche Arbeitsmappen-Aufrufer können die unter kontextbezogene Formelauswertung beschriebenen Formel-APIs verwenden

Das Backend nutzt den gebündelten 16-Bit-Build von PCRE2 10.49 mit UTF-Modus, automatischen Budget-Callouts und ohne JIT, mit statischen Objekten für Delphi- und C++Builder-Windows-Ziele sowie unterstützten FPC-Linux-x64- oder macOS-ARM64-Zielen; nicht unterstützte Backend-Ziele melden xrsUnavailable

Jede Instanz besitzt ihr kompiliertes Pattern, ihren Allokator und ihre Match-Kontexte; erzeugen Sie eine separate Instanz pro gleichzeitiger Operation und halten Sie den Besitzer des Budget-Callbacks am Leben, bis die Instanz freigegeben wird

Öffentliche DeklarationKontrakt
TXLSRegex.Create(ABudget: TXLSRegexBudget)Allokiert Backend-Kontexte und behält den optionalen Callback; übergeben Sie nil für kein Aufrufer-Budget, prüfen Sie dann Operationsergebnisse und Status
TXLSRegex.DestroyGibt das kompilierte Pattern, Match-Daten und Kontexte frei; Aufrufer rufen normalerweise Free in einem finally-Block auf
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanKompiliert ein UTF-16-Pattern und bereitet dessen Capture-Speicher vor, wobei ein vorheriges Pattern ersetzt wird; IgnoreCase aktiviert PCRE2-Groß-/kleinschreibungsunabhängiges Matching, und False lässt das Matching groß-/kleinssensitiv
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanErfordert eine erfolgreiche Kompilierung, sucht ab dem nullbasierten UTF-16-Offset und liefert abgekoppelte Capture-Offsets; NonemptyAtStart=True fordert ein verankertes, nichtleeres Match an genau diesem Offset an, was das Weiterlaufen an einem leeren Match vorbei unterstützt
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanErfordert eine erfolgreiche Kompilierung und nutzt die PCRE2-Ersetzungssyntax, einschließlich nummerierter und benannter Capture-Referenzen; null wählt alle Matches, ein positiver Wert das 1-basierte Vorkommen von vorn, und ein negativer Wert zählt vom Ende
TXLSRegex.Check(AWork, AExtraBytes): BooleanRuft den Budget-Callback mit dem aktuellen Arbeitsinkrement und den residenten Backend-Bytes plus AdditionalBytes sowie den vorgeschlagenen Extra-Bytes auf; negative Byte-Abrechnung, Integer-Overflow oder ein eingerasteter Endstatus liefert False
TXLSRegex.Status: TXLSRegexStatusNur lesender Status der letzten Operation oder eines terminalen Budget-/Backend-Zustands; verwenden Sie ihn, nachdem eine Operation False geliefert hat, um ein fehlendes Match von einem Fehlschlag zu unterscheiden
TXLSRegex.CaptureCount: CardinalNur lesende Anzahl expliziter Capture-Gruppen, gemeldet vom zuletzt kompilierten Pattern, ohne den Whole-Match-Slot; verwenden Sie ihn, nachdem Compile erfolgreich war
TXLSRegex.AdditionalBytes: Int64Lese-/schreibbare Abrechnung für aufruferbesessene temporäre Puffer, die in jede Budgetprüfung einfließen sollen; er steht standardmäßig auf null und allokiert selbst keinen Speicher

Offsets, Ausgabe und Ersetzungsverhalten

TXLSRegexOffsets ist ein dynamisches Array aus NativeUInt mit zwei Elementen pro Slot; Slot null enthält das Gesamtmatch, gefolgt von expliziten Capture-Gruppen in Deklarationsreihenfolge

Jedes Paar ist ein nullbasierter Start und exklusives Ende, gemessen in UTF-16-Codeeinheiten, nicht in Delphis 1-basierten String-Indizes oder Unicode-Scalarpositionen; eine nicht gesetzte optionale Capture nutzt High(NativeUInt) für beide Endpunkte

Match leert sein Ausgabearray vor jedem Versuch; Replace leert seine Ausgabe vor dem Beginnen, und eine erfolgreiche Ersetzung ohne gewähltes Vorkommen liefert den Originaltext mit xrsOk

Ersetzungsreferenzen nutzen PCRE2s Dollar-Notation, etwa $1 und ${name}; eine nicht beteiligte Capture trägt einen leeren String bei, während eine ungültige Ersetzungsreferenz xrsInvalidReplacement meldet

Rufen Sie Compile erfolgreich auf, bevor Sie matchen oder ersetzen; ein Aufruf ohne vorbereitetes Pattern liefert False und fabriziert keinen Pattern-Fehlerstatus

Budget-Callback

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object erhält ein Arbeitsinkrement zum Akkumulieren und eine aktuelle Byteschätzung zum Vergleichen mit dem Limit des Aufrufers; ABytes ist kein Allokationsdelta

Prüfungen erfolgen während der Pattern-Vorbereitung, Backend-Allokationen, Matching-Callouts, der Allokation von Ergebnis-Offsets und der Substitution; der Aufrufer liefert Abbruch- und Quotenrichtlinie, statt sich auf ein prozessweites veränderliches Budget zu verlassen

Das Liefern von False oder das Auslösen einer Exception im Callback bricht die Operation mit xrsAborted ab; Callback-Exceptions entweichen nicht durch das native Backend

xrsResourceLimit, xrsAborted und xrsUnavailable sind für diese Instanz terminal, erzeugen Sie also eine neue Instanz, bevor Sie nach diesen Zuständen erneut versuchen; ungültige Pattern- oder Textfehler richten diesen terminalen Riegel nicht ein

Statuswerte

TXLSRegexStatus-WertBedeutung
xrsOkDie Backend-Operation wurde erfolgreich abgeschlossen
xrsNoMatchDie aktuelle Match-Suche fand kein Match
xrsInvalidPatternDas Pattern konnte nicht kompiliert werden, einschließlich ungültiger Pattern-Kodierung
xrsInvalidReplacementDer Ersetzungsausdruck wurde zurückgewiesen oder ein Backend-Fehler lag außerhalb der expliziten Statusmappings
xrsInvalidTextMatching oder Substitution traf auf einen explizit klassifizierten UTF-16-Eingabe- oder Zeichengrenzfehler
xrsResourceLimitEine Backend-Allokation, ein internes Matching-Limit oder ein Byte-Abrechnungslimit verhinderte den Abschluss
xrsAbortedDer Budget-Callback stoppte die Operation, sein Callback löste eine Exception aus, oder ein nativer Callout brach das Matching ab
xrsUnavailableDas Ziel hat kein unterstütztes gebündeltes statisches Backend

Der Calculator mappt diese Backend-Statuswerte in seine eigenen Formelfehler und Auswertungsdiagnosen; diese direkten Backend-APIs liefern keine Excel-Fehler-Variants