Documentazione HotXLS

API del backend delle espressioni regolari

lxRegex espone TXLSRegex, il backend con stato usato dalle funzioni di espressioni regolari del calcolatore; i chiamanti ordinari del workbook possono usare le API di formula descritte in valutazione contestuale delle formule

Il backend usa la build 16-bit inclusa di PCRE2 10.49 con modalità UTF, callout di budget automatici e nessun JIT, con oggetti statici per i target Windows di Delphi e C++Builder e per i target supportati FPC Linux x64 o macOS ARM64; i backend non supportati del target riportano xrsUnavailable

Ogni istanza possiede il proprio pattern compilato, allocatore e contesti di match; crea un'istanza separata per ogni operazione simultanea e tieni in vita il proprietario della callback di budget finché l'istanza non viene liberata

Dichiarazione pubblicaContratto
TXLSRegex.Create(ABudget: TXLSRegexBudget)Alloca i contesti del backend e trattiene la callback opzionale; passa nil per nessun budget del chiamante, poi ispeziona i risultati delle operazioni e Status
TXLSRegex.DestroyRilascia il pattern compilato, i dati di match e i contesti; i chiamanti normalmente invocano Free in un blocco finally
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompila un pattern UTF-16 e prepara il suo storage di capture, sostituendo qualunque pattern precedente; IgnoreCase abilita il matching PCRE2 senza distinzione tra maiuscole e minuscole e False lascia il matching sensibile alle maiuscole
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanRichiede una compilazione riuscita, cerca dall'offset UTF-16 a base zero e restituisce offset di capture scollegati; NonemptyAtStart=True richiede un match ancorato e non vuoto a quell'esatto offset, che supporta l'avanzamento oltre un match vuoto
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanRichiede una compilazione riuscita e usa la sintassi di sostituzione PCRE2, inclusi i riferimenti a capture numerati e denominati; zero seleziona tutti i match, un valore positivo seleziona l'occorrenza a base uno dall'inizio, e un valore negativo conta dalla fine
TXLSRegex.Check(AWork, AExtraBytes): BooleanChiama la callback di budget con l'incremento di lavoro corrente e i byte residenti del backend più AdditionalBytes e i byte extra proposti; contabilità di byte negativa, overflow di interi o uno stato terminale già fissato restituiscono False
TXLSRegex.Status: TXLSRegexStatusStato in sola lettura dell'ultima operazione o della condizione terminale di budget/backend; usalo dopo che un'operazione restituisce False per distinguere un match assente da un fallimento
TXLSRegex.CaptureCount: CardinalNumero in sola lettura dei gruppi di acquisizione espliciti riportati dal pattern compilato più di recente, escluso lo slot della corrispondenza completa; usalo dopo il successo di Compile
TXLSRegex.AdditionalBytes: Int64Contabilità in lettura e scrittura per buffer temporanei di proprietà del chiamante che devono partecipare a ogni verifica del budget; vale zero per impostazione predefinita e non alloca memoria da sé

Offset, output e comportamento di sostituzione

TXLSRegexOffsets è un array dinamico di NativeUInt con due elementi per slot; lo slot zero contiene la corrispondenza completa, seguita dai gruppi di acquisizione espliciti in ordine di dichiarazione

Ogni coppia è un inizio a base zero e una fine esclusiva misurati in unità di codice UTF-16, non negli indici di stringa a base uno di Delphi né nelle posizioni di scalari Unicode; un capture opzionale non impostato usa High(NativeUInt) per entrambi gli estremi

Match svuota il suo array di output prima di ogni tentativo; Replace svuota il suo output prima di iniziare, e una sostituzione riuscita senza occorrenze selezionate restituisce il testo originale con xrsOk

I riferimenti di sostituzione usano la notazione col dollaro di PCRE2, come $1 e ${name}; un capture partecipante non impostato contribuisce con una stringa vuota, mentre un riferimento di sostituzione non valido riporta xrsInvalidReplacement

Chiama Compile con successo prima di fare match o sostituzioni; una chiamata senza un pattern preparato restituisce False e non fabbrica uno stato di errore del pattern

Callback di budget

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object riceve un incremento di lavoro da accumulare e una stima corrente dei byte da confrontare con il limite del chiamante; ABytes non è un delta di allocazione

I controlli avvengono durante la preparazione del pattern, le allocazioni del backend, i callout di matching, l'allocazione degli offset dei risultati e la sostituzione; il chiamante fornisce la politica di annullamento e quota invece di affidarsi a un budget mutabile a livello di processo

Restituire False o sollevare un'eccezione dalla callback interrompe l'operazione con xrsAborted; le eccezioni delle callback non sfuggono attraverso il backend nativo

xrsResourceLimit, xrsAborted e xrsUnavailable sono terminali per quella istanza, quindi crea un'altra istanza prima di riprovare dopo quelle condizioni; gli errori di pattern o testo non validi non impongono quel blocco terminale

Valori di stato

Valore di TXLSRegexStatusSignificato
xrsOkL'operazione del backend si è completata con successo
xrsNoMatchLa ricerca di match corrente non ha trovato corrispondenze
xrsInvalidPatternIl pattern non poteva essere compilato, codifica non valida del pattern compresa
xrsInvalidReplacementL'espressione di sostituzione è stata rifiutata oppure un errore del backend è caduto fuori dalle mappature esplicite di stato
xrsInvalidTextIl matching o la sostituzione ha incontrato un errore di input UTF-16 o di confine di carattere classificato esplicitamente
xrsResourceLimitUn'allocazione del backend, un limite interno di matching o un limite di contabilità dei byte hanno impedito il completamento
xrsAbortedLa callback di budget ha fermato l'operazione, la sua callback ha sollevato un'eccezione, oppure un callout nativo ha interrotto il matching
xrsUnavailableIl target non ha un backend statico incluso supportato

Il calcolatore mappa questi stati del backend nei propri errori di formula e diagnostiche di valutazione; queste API dirette del backend non restituiscono Variant di errore Excel