Documentación de HotXLS

API de backend de expresiones regulares

lxRegex expone TXLSRegex, el backend con estado que usan las funciones de expresiones regulares de la calculadora; quienes llaman desde un libro ordinario pueden usar las API de fórmulas descritas en la evaluación de fórmulas contextual

El backend usa la compilación de 16 bits de PCRE2 10.49 incluida, con modo UTF, callouts automáticos de presupuesto y sin JIT, con objetos estáticos para los objetivos Windows de Delphi y C++Builder y los objetivos FPC Linux x64 o macOS ARM64 admitidos; los objetivos de backend no admitidos informan xrsUnavailable

Cada instancia posee su patrón compilado, su asignador y sus contextos de coincidencia; crea una instancia separada para cada operación simultánea y mantén vivo al propietario del callback de presupuesto hasta que se libere la instancia

Declaración públicaContrato
TXLSRegex.Create(ABudget: TXLSRegexBudget)Asigna los contextos del backend y retiene el callback opcional; pasa nil para no tener presupuesto de quien llama, y después examina los resultados de las operaciones y Status
TXLSRegex.DestroyLibera el patrón compilado, los datos de coincidencia y los contextos; quienes llaman normalmente invocan Free en un bloque finally
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompila un patrón UTF-16 y prepara su almacenamiento de capturas, reemplazando cualquier patrón anterior; IgnoreCase activa la coincidencia de PCRE2 sin distinguir mayúsculas y False deja la coincidencia sensible a mayúsculas
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanExige una compilación con éxito, busca desde el desplazamiento UTF-16 de base cero y devuelve desplazamientos de captura desacoplados; NonemptyAtStart=True pide una coincidencia anclada y no vacía en ese desplazamiento exacto, lo que permite avanzar más allá de una coincidencia vacía
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanExige una compilación con éxito y usa la sintaxis de reemplazo de PCRE2, incluidas las referencias de captura numeradas y con nombre; cero selecciona todas las coincidencias, un valor positivo selecciona la aparición de base uno desde el inicio, y un valor negativo cuenta desde el final
TXLSRegex.Check(AWork, AExtraBytes): BooleanLlama al callback de presupuesto con el incremento de trabajo actual y los bytes residentes del backend más AdditionalBytes y los bytes extra propuestos; la contabilización negativa de bytes, el desbordamiento de enteros o un estado terminal fijado devuelven False
TXLSRegex.Status: TXLSRegexStatusEstado de solo lectura de la última operación o de una condición terminal de presupuesto/backend; úsalo cuando una operación devuelva False para distinguir la ausencia de coincidencia de un fallo
TXLSRegex.CaptureCount: CardinalNúmero de solo lectura de grupos de captura explícitos que informa el patrón compilado más recientemente, excluida la ranura de la coincidencia completa; úsalo cuando Compile tenga éxito
TXLSRegex.AdditionalBytes: Int64Contabilización de lectura/escritura de los búferes temporales propiedad de quien llama que deben participar en cada comprobación de presupuesto; su valor por defecto es cero y no asigna memoria por sí mismo

Desplazamientos, salida y comportamiento de reemplazo

TXLSRegexOffsets es un array dinámico de NativeUInt con dos elementos por ranura; la ranura cero contiene la coincidencia completa, seguida de los grupos de captura explícitos en orden de declaración

Cada par es un inicio de base cero y un fin exclusivo medidos en unidades de código UTF-16, en lugar de los índices de cadena de base uno de Delphi o las posiciones de escalares Unicode; una captura opcional sin asignar usa High(NativeUInt) en ambos extremos

Match limpia su array de salida antes de cada intento; Replace limpia su salida antes de empezar, y un reemplazo con éxito sin ninguna aparición seleccionada devuelve el texto original con xrsOk

Las referencias de reemplazo usan la notación de dólar de PCRE2, como $1 y ${name}; una captura participante sin asignar aporta una cadena vacía, mientras que una referencia de reemplazo no válida informa xrsInvalidReplacement

Llama a Compile con éxito antes de buscar coincidencias o reemplazar; una llamada sin un patrón preparado devuelve False y no fabrica un estado de error de patrón

Callback de presupuesto

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object recibe un incremento de trabajo para acumular y una estimación actual de bytes para comparar con el límite de quien llama; ABytes no es una diferencia de asignación

Las comprobaciones ocurren durante la preparación del patrón, las asignaciones del backend, los callouts de coincidencia, la asignación de desplazamientos de resultado y la sustitución; quien llama aporta la política de cancelación y cuota en lugar de confiar en un presupuesto mutable de todo el proceso

Devolver False o lanzar una excepción desde el callback aborta la operación con xrsAborted; las excepciones del callback no escapan a través del backend nativo

xrsResourceLimit, xrsAborted y xrsUnavailable son terminales para esa instancia, así que crea otra instancia antes de reintentar tras esas condiciones; los errores de patrón o de texto no imponen ese fijado terminal

Valores de estado

Valor de TXLSRegexStatusSignificado
xrsOkLa operación del backend se completó con éxito
xrsNoMatchLa búsqueda de coincidencia actual no encontró ninguna coincidencia
xrsInvalidPatternEl patrón no pudo compilarse, incluida una codificación de patrón no válida
xrsInvalidReplacementLa expresión de reemplazo se rechazó o un error del backend quedó fuera de los mapeos de estado explícitos
xrsInvalidTextLa coincidencia o la sustitución encontró un error de entrada UTF-16 o de límite de carácter clasificado explícitamente
xrsResourceLimitUna asignación del backend, un límite interno de coincidencia o un límite de contabilización de bytes impidieron completar
xrsAbortedEl callback de presupuesto detuvo la operación, su callback lanzó una excepción o un callout nativo abortó la coincidencia
xrsUnavailableEl objetivo no tiene un backend estático incluido admitido

La calculadora mapea estos estados del backend a sus propios errores de fórmula y diagnósticos de evaluación; estas API directas del backend no devuelven variants de error de Excel