يعرض lxRegex TXLSRegex، الـ backend ذي الحالة الذي تستخدمه دوال التعبيرات النمطية في المقيّم؛ ويستطيع مستدعو المصنف العاديون استخدام واجهات الصيغ الموصوفة في التقييم السياقي للصيغ
يستخدم الـ backend بنية PCRE2 10.49 16-بت المرفقة بوضع UTF ونداءات ميزانية تلقائية وبلا JIT، مع كائنات ثابتة لأهداف Delphi وC++Builder على Windows وأهداف FPC المدعومة Linux x64 أو macOS ARM64؛ وتُبلّغ أهداف backend غير المدعومة عن xrsUnavailable
تملك كل نسخة نمطَها المجمَّع ومخصِّصها وسياقات المطابقة الخاصة بها؛ وأنشئ نسخة منفصلة لكل عملية متزامنة وأبقِ مالك نداء الميزانية حيًّا حتى تُحرَّر النسخة
| الإعلان العام | العقد |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | يخصص سياقات الـ backend ويحتفظ بالنداء الاختياري؛ ومرِّر nil لعدم وجود ميزانية مستدعي، ثم افحص نتائج العمليات وStatus |
TXLSRegex.Destroy | يحرر النمط المجمَّع وبيانات المطابقة والسياقات؛ ويستدعي المستدعون عادةً Free في كتلة finally |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | يجمع نمط UTF-16 ويهيئ تخزين التقاطه مستبدلًا أي نمط سابق؛ ويفعّل IgnoreCase مطابقة PCRE2 غير الحساسة لحالة الأحرف ويُبقي False المطابقة حساسة لحالة الأحرف |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | يتطلب تجميعًا ناجحًا ويبحث من إزاحة UTF-16 المبنية على الصفر ويعيد إزاحات التقاط منفصلة؛ ويطلب NonemptyAtStart=True مطابقة مثبتة غير فارغة عند تلك الإزاحة التامة، بما يدعم التقدم بعد مطابقة فارغة |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | يتطلب تجميعًا ناجحًا ويستخدم بنية استبدال PCRE2 بما يشمل مراجع الالتقاط المرقمة والمسماة؛ والصفر يختار كل التطابقات، والقيمة الموجبة تختار الورود المبنية على الواحد من البداية، والقيمة السالبة تَعُدُّ من النهاية |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | يستدعي نداء الميزانية بزيادة العمل الحالية وبايتات الـ backend المقيمة زائد AdditionalBytes والبايتات الإضافية المقترحة؛ والمحاسبة السالبة للبايتات أو تجاوز العدد الصحيح أو حالة ختامية مثبَّتة تعيد False |
TXLSRegex.Status: TXLSRegexStatus | حالة القراءة فقط لآخر عملية أو لشرط الميزانية/الـ backend الختامي؛ واستخدمها بعد إعادة عملية False للتمييز بين غياب تطابق وفشل |
TXLSRegex.CaptureCount: Cardinal | عدد مجموعات الالتقاط الصريحة التي بلّغ عنها أحدث نمط مجمَّع للقراءة فقط، باستثناء خانة التطابق الكامل؛ واستخدمه بعد نجاح Compile |
TXLSRegex.AdditionalBytes: Int64 | محاسبة للقراءة والكتابة لمخازن المستدعي المؤقتة التي يُفترض أن تدخل في كل فحص ميزانية؛ وافتراضها صفر وهي لا تخصص ذاكرة بنفسها |
TXLSRegexOffsets مصفوفة ديناميكية من NativeUInt بعنصرين لكل خانة؛ وتحتوي الخانة صفر التطابق الكامل، تليها مجموعات الالتقاط الصريحة بترتيب الإعلان
كل زوج هو بداية مبنية على الصفر ونهاية حصرية مقيسان بوحدات شيفرة UTF-16 لا بفهارس سلاسل Delphi القائمة على الواحد ولا بمواضع العددية Unicode؛ والالتقاط الاختياري غير المعيَّن يستخدم High(NativeUInt) للطرفين
يمسح Match مصفوفة إخراجه قبل كل محاولة؛ ويمسح Replace مخرجه قبل البدء، والاستبدال الناجح بلا ورود مختارة يعيد النص الأصلي مع xrsOk
تستخدم مراجع الاستبدال تدوين الدولار في PCRE2 مثل $1 و${name}؛ ويسهم الالتقاط غير المعيَّن المشارك في المطابقة بسلسلة فارغة، بينما يبلّغ مرجع الاستبدال غير الصالح عن xrsInvalidReplacement
استدعِ Compile بنجاح قبل المطابقة أو الاستبدال؛ والاستدعاء دون نمط مجهز يعيد False ولا يصنع حالة خطأ نمط
تتسلم TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object زيادة عمل لتراكمها وتقدير بايتات حاليًا لمقارنته بحد المستدعي؛ وABytes ليس فرق تخصيص
تجري الفحوص أثناء تهيئة النمط وتخصيصات الـ backend ونداءات المطابقة وتخصيص إزاحات النتائج والاستبدال؛ ويزود المستدعي سياسة الإلغاء والحصة بدلًا من الاعتماد على ميزانية قابلة للتعديل على مستوى العملية
إعادة False أو إثارة استثناء من النداء يجهض العملية بـ xrsAborted؛ ولا تهرّب استثناءات النداء عبر الـ backend الأصلي
قيم xrsResourceLimit وxrsAborted وxrsUnavailable ختامية لتلك النسخة، فأنشئ نسخة أخرى قبل إعادة المحاولة بعد تلك الحالات؛ وأخطاء النمط أو النص غير الصالحة لا تفرض ذلك التثبيت الختامي
قيمة TXLSRegexStatus | المعنى |
|---|---|
xrsOk | اكتملت عملية الـ backend بنجاح |
xrsNoMatch | لم يجد البحث عن التطابق الحالي تطابقًا |
xrsInvalidPattern | تعذّر تجميع النمط، بما يشمل ترميز نمط غير صالح |
xrsInvalidReplacement | رُفض تعبير الاستبدال أو وقع خطأ backend خارج تعيينات الحالة الصريحة |
xrsInvalidText | صادفت المطابقة أو الاستبدال خطأ إدخال UTF-16 أو خطأ حدّ محارف مصنَّفًا صراحةً |
xrsResourceLimit | منع تخصيص backend أو حد مطابقة داخلي أو حد محاسبة بايتات إتمامَ العملية |
xrsAborted | وقف نداء الميزانية العملية أو أثار نداؤه استثناء أو جهض نداء أصلي المطابقة |
xrsUnavailable | لا يملك الهدف backendًا ثابتًا مرفقًا مدعومًا |
يعيّن المقيّم حالات الـ backend هذه إلى أخطاء صيغه وتشخيصات تقييمه؛ وهذه الواجهات المباشرة للـ backend لا تعيد Variants أخطاء Excel