وثائق HotXLS

واجهة backend التعبيرات النمطية

يعرض 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