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 Deklaration | Kontrakt |
|---|---|
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.Destroy | Gibt das kompilierte Pattern, Match-Daten und Kontexte frei; Aufrufer rufen normalerweise Free in einem finally-Block auf |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Kompiliert 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): Boolean | Erfordert 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): Boolean | Erfordert 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): Boolean | Ruft 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: TXLSRegexStatus | Nur 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: Cardinal | Nur lesende Anzahl expliziter Capture-Gruppen, gemeldet vom zuletzt kompilierten Pattern, ohne den Whole-Match-Slot; verwenden Sie ihn, nachdem Compile erfolgreich war |
TXLSRegex.AdditionalBytes: Int64 | Lese-/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 |
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
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
TXLSRegexStatus-Wert | Bedeutung |
|---|---|
xrsOk | Die Backend-Operation wurde erfolgreich abgeschlossen |
xrsNoMatch | Die aktuelle Match-Suche fand kein Match |
xrsInvalidPattern | Das Pattern konnte nicht kompiliert werden, einschließlich ungültiger Pattern-Kodierung |
xrsInvalidReplacement | Der Ersetzungsausdruck wurde zurückgewiesen oder ein Backend-Fehler lag außerhalb der expliziten Statusmappings |
xrsInvalidText | Matching oder Substitution traf auf einen explizit klassifizierten UTF-16-Eingabe- oder Zeichengrenzfehler |
xrsResourceLimit | Eine Backend-Allokation, ein internes Matching-Limit oder ein Byte-Abrechnungslimit verhinderte den Abschluss |
xrsAborted | Der Budget-Callback stoppte die Operation, sein Callback löste eine Exception aus, oder ein nativer Callout brach das Matching ab |
xrsUnavailable | Das 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