lxRegex stelt TXLSRegex bloot, de stateful backend die de reguliere-expressiefuncties van de calculator gebruiken; gewone werkmap-aanroepers kunnen de formule-API's gebruiken die bij contextuele formule-evaluatie worden beschreven
De backend gebruikt de meegeleverde PCRE2 10.49 16-bit build met UTF-modus, automatische budget-callouts en geen JIT, met statische objecten voor Delphi- en C++Builder-Windows-doelen en ondersteunde FPC Linux x64- of macOS ARM64-doelen; niet-ondersteunde backend-doelen rapporteren xrsUnavailable
Elke instantie is eigenaar van zijn gecompileerde patroon, allocator en matchcontexten; maak een aparte instantie voor elke gelijktijdige bewerking en houd de eigenaar van de budget-callback in leven tot de instantie wordt vrijgegeven
| Openbare declaratie | Contract |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | Reserveert backend-contexten en houdt de optionele callback vast; geef nil mee voor geen budget van de aanroeper en inspecteer daarna bewerkingsresultaten en Status |
TXLSRegex.Destroy | Geeft het gecompileerde patroon, matchdata en contexten vrij; aanroepers roepen normaal Free aan in een finally-blok |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Compileert een UTF-16-patroon en bereidt zijn capture-opslag voor, waarbij elk eerder patroon wordt vervangen; IgnoreCase schakelt PCRE2-hoofdletterongevoelig matching in en False laat matching hoofdlettergevoelig |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | Vereist een geslaagde compilatie, zoekt vanaf de zero-based UTF-16-offset en geeft losgemaakte capture-offsets terug; NonemptyAtStart=True vraagt een verankerde, niet-lege match op die exacte positie, wat vooruitkomen voorbij een lege match ondersteunt |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | Vereist een geslaagde compilatie en gebruikt PCRE2-vervangingssyntaxis, inclusief genummerde en benoemde capture-verwijzingen; nul kiest alle matches, een positieve waarde kiest het 1-based voorkomen vanaf het begin, en een negatieve waarde telt vanaf het einde |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | Roept de budget-callback aan met de actuele werktoename en residente backendbytes plus AdditionalBytes en de voorgestelde extra bytes; negatieve byte-administratie, integer-overflow of een gelatchte terminale status geeft False terug |
TXLSRegex.Status: TXLSRegexStatus | Alleen-lezen status van de laatste bewerking of terminale budget-/backendtoestand; gebruik het nadat een bewerking False teruggeeft om een afwezige match van een fout te onderscheiden |
TXLSRegex.CaptureCount: Cardinal | Alleen-lezen aantal expliciete capture-groepen gerapporteerd door het laatst gecompileerde patroon, exclusief de hele-match-slot; gebruik het nadat Compile is geslaagd |
TXLSRegex.AdditionalBytes: Int64 | Lees/schrijfbare administratie voor tijdelijke buffers in eigendom van de aanroeper die bij elke budgetcontrole moeten meetellen; staat standaard op nul en wijst zelf geen geheugen toe |
TXLSRegexOffsets is een dynamische array van NativeUInt met twee elementen per slot; slot nul bevat de hele match, gevolgd door expliciete capture-groepen in declaratievolgorde
Elk paar is een zero-based begin en exclusief einde, gemeten in UTF-16-code-eenheden, en niet de 1-based stringindices van Delphi of Unicode-scalarposities; een niet-ingestelde optionele capture gebruikt High(NativeUInt) voor beide eindpunten
Match wist zijn uitvoerarray vóór elke poging; Replace wist zijn uitvoer voordat hij begint, en een geslaagde vervanging zonder gekozen voorkomen geeft de oorspronkelijke tekst terug met xrsOk
Vervangingsverwijzingen gebruiken de dollarnotatie van PCRE2, zoals $1 en ${name}; een niet-deelnemende capture levert een lege string, terwijl een ongeldige vervangingsverwijzing xrsInvalidReplacement rapporteert
Roep Compile met succes aan vóór het matchen of vervangen; een aanroep zonder voorbereid patroon geeft False terug en verzint geen patroonfoutstatus
TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object ontvangt een op te tellen werktoename en een actuele byteschatting om te vergelijken met de limiet van de aanroeper; ABytes is geen toewijzingsdelta
Controles plaatsen tijdens patroonvoorbereiding, backend-toewijzingen, matching-callouts, het toewijzen van resultaatoffsets en substitutie; de aanroeper levert het annulerings- en quotumbeleid in plaats van te leunen op een procesbreed mutabel budget
False teruggeven of een exception geven vanuit de callback breekt de bewerking af met xrsAborted; callback-exceptions ontsnappen niet via de native backend
xrsResourceLimit, xrsAborted en xrsUnavailable zijn terminaal voor die instantie, dus maak een nieuwe instantie aan voordat je het na die toestanden opnieuw probeert; ongeldige patroon- of tekstfouten leggen die terminale latch niet op
TXLSRegexStatus-waarde | Betekenis |
|---|---|
xrsOk | De backend-bewerking is met succes voltooid |
xrsNoMatch | De huidige match-zoekactie vond geen match |
xrsInvalidPattern | Het patroon kon niet worden gecompileerd, inclusief ongeldige patrooncodering |
xrsInvalidReplacement | De vervangingsexpressie werd geweigerd of een backendfout viel buiten de expliciete statusmappings |
xrsInvalidText | Matching of substitutie stuitte op een expliciet geclassificeerde UTF-16-invoer- of tekengrensfout |
xrsResourceLimit | Een backend-toewijzing, interne matchinglimiet of byte-administratielimiet verhinderde voltooiing |
xrsAborted | De budget-callback stopte de bewerking, zijn callback gaf een exception, of een native callout brak matching af |
xrsUnavailable | Het doelplatform heeft geen ondersteunde meegeleverde statische backend |
De calculator mapt deze backend-statussen naar zijn eigen formulefouten en evaluatiediagnoses; deze directe backend-API's geven geen Excel-foutvariants terug